dfs的剪枝当中,需要设置一个变量w记录浪费的木材。但是w的更新的判断条件我有个问题:为什么是a[i]<b[1]而不是a[i]<b[x+1}?(会有两个点WA)
bool dfs(int x,int l){
if(x==0)
return 1;
if(tot-w<sum[mid])
return 0;
bool f=0;
for(int i=l;i<=m;i++){
if(a[i]>=b[x]){
a[i]-=b[x];
if(a[i]<b[1])
w+=a[i];
if(b[x-1]==b[x])
f=dfs(x-1,i);
else
f=dfs(x-1,1);
if(a[i]<b[1])
w-=a[i];
a[i]+=b[x];
if(f)
return 1;
}
}
return 0;
}