WA40 代码:
#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi 0
I AK IOI;
int v,a[30],g,f[30][20],ans=0x3f3f3f,s[30];
vector<int>h,b;
bool check(){
for(int i=1;i<=v;i++)if(s[i]<a[i])return 0;
return 1;
}
void dfs(int x){
if(x>g)return;
if(h.size()>=ans)return;
if(check()){
if(h.size()<ans){
ans=h.size();
b=h;
}
return;
}
h.push_back(x);
for(int i=1;i<=v;i++)s[i]+=f[x][i];
dfs(x+1);
h.pop_back();
for(int i=1;i<=v;i++)s[i]-=f[x][i];
dfs(x+1);
}
int main(){
cin>>v;
for(int i=1;i<=v;i++)cin>>a[i];
cin>>g;
for(int i=1;i<=g;i++)for(int j=1;j<=v;j++)cin>>f[i][j];
dfs(0);
cout<<b.size();
for(auto it:b)cout<<' '<<it;
i_ak ioi;
}
问题似乎出在当 size 相同时,也更新了数据。