zoj1711-Sum It Up
题链:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1711
就是给你一个数t,还有n个非递增的数,输出从中取i个数相加为t的序列,1<=i<=n
裸dfs,同样是,不过呢,dfs是一种很难捉摸的东西呵;
在这道题目上,我清楚了这么几点:
1.dfs的世界里,全局变量是一种需要很谨慎使用的东西
2.dfs的核心就在于递归调用+条件终止
3.对于这道题目而言,去重很是关键
#include
#include
#include
int a[15];
int p[15];
int vis[15];
int t, n, flag;
int rec ;
void dfs(int k, int sum , int num) {
int i;
if(k>n || sum<0) return ;
if(sum==0) {
flag = 1;
for(i=0; i
t) i++;
printf("Sums of %d:\n",t);
flag = 0;
memset(vis,0,sizeof(vis));
dfs(i,t,0);
if(!flag){
printf("NONE\n");
}
}
return 0;
}