(实际上输出永远是错的)结果一看题解,都和我不一样(; ̄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;
}