剪枝:
1.从后向前枚举
2.迭代加深
然后就0msAC了
//By SiriusRen
#include <cstdio>
using namespace std;
int n,T,s[105];
bool dfs(int t){
if(s[t]==n)return 1;
if(t>=T)return 0;
for(int i=t;i>=1;i--){
s[t+1]=s[i]+s[t];
if(dfs(t+1))return 1;
}
}
int main(){
s[1]=1;
while(scanf("%d",&n)&&n)
for(T=1;;T++)
if(dfs(1)){
for(int j=1;j<=T;j++)
printf("%d ",s[j]);
puts("");break;
}
}
转载于:https://www.cnblogs.com/SiriusRen/p/6532307.html
最后
以上就是柔弱小丸子最近收集整理的关于POJ 2248 搜索的全部内容,更多相关POJ内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复