hdu1258 DFS+回溯
来源:互联网 发布:tensorflow源码结构 编辑:程序博客网 时间:2024/05/20 13:39
#include <iostream>#include <cstdio>using namespace std;int tmp[15],a[15];int t,n;int flag;int dfs(int s,int index,int cnt){ if(s==t) { flag=1; printf("%d",tmp[0]); for(int i=1;i<cnt;i++) printf("%+d",tmp[i]); printf("\n"); return 0; } for(int j=index;j<n;j++) { if(j==index||a[j-1]!=a[j]) { tmp[cnt]=a[j]; dfs(s+a[j],j+1,cnt+1);//如果把j+1改成index+1就是分方向的相加结果 } }}int main(){ int i,j; while(scanf("%d%d",&t,&n)!=EOF) { if(t==0&&n==0) break; for(i=0;i<n;i++) scanf("%d",&a[i]); flag=0; printf("Sums of %d:\n",t); dfs(0,0,0); if(!flag) printf("NONE\n"); } return 0;}