RT,大概就是,把木棍从大到小排序。
优先用大的,不去尝试次大的。因为大的一定比次打的优。为什么这样错了啊,感觉到有点不对,但是没法特别详细的感觉到不对(举不出例子?)
bool dfs(int x){
if(x==0){
return true;
}
for(int i = N;i>=1;--i){
if(!use[i]&&x>=a[i]){
use[i]=true;
if(dfs(x-a[i])){
return true;
}
use[i]=false;
}
}
return false;
}
bool check(int num){
for(int i = 1;i<=sum/num;++i){
if(!dfs(num)){
return false;
}
}
return true;
}