自认为写的很对的DFS
查看原帖
自认为写的很对的DFS
730263
chiemi520楼主2022/7/18 22:43

(实际上输出永远是错的)结果一看题解,都和我不一样(; ̄O ̄)

#include <cstring>
#include <cstdio>
using namespace std;
int a[27],v,g,i,j,b[27],ans=30,m[17];
int Vi[27][17];

void dfs(int z,int s){
    bool f=0;
    for (i=1;i<=v;i++){
        if(a[i]>b[i]){f=1;
            //cout<<b[i];
            break;}
        
    }
    if(!f){ans=min(z,ans);return;}//end point;
    for(i=s;i<=g;i++){
        for(j=1;j<=v;j++){
            b[j]+=Vi[j][i];
        }
        cout<<z<<endl;
        dfs(z+1,i);
        
    }
}

int main(){
    memset(b,0,sizeof(int));
    cin>>v;
    for (i=1;i<=v;i++){
        cin>>a[i];
    }
    cin>>g;
    for (i=1;i<=g;i++){
        for (j=1;j<=v;j++){
            cin>>Vi[j][i];//j是维他命编号,i是饲料种类;
        }
    }
    dfs(0,1);
    cout<<ans;
    return 0;
}
2022/7/18 22:43
加载中...