hdoj 1258(DFS)
Posted huluxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdoj 1258(DFS)相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> using namespace std; int a[100],n,m,b[100],flag; void printf(int k) { for(int i=0;i<k;i++) { printf("%d",b[i]); if(i!=k-1) printf("+"); } printf(" "); } void dfs(int k,int sum,int t) { if(sum>n||k>m) return; if(sum==n) { printf(t); flag=1; return; } b[t]=a[k]; dfs(k+1,sum+a[k],t+1); while(k+1<m&&a[k+1]==a[k])//去重,可以控制重复数字的个数。 { k++; } dfs(k+1,sum,t); } int main(int argc, char *argv[]) { while(cin>>n>>m) { if(n==0&&m==0) break; for(int i=0;i<m;i++) { cin>>a[i]; } memset(b,0,sizeof(b)); flag=0; printf("Sums of %d: ",n); dfs(0,0,0); if(!flag) printf("NONE "); } return 0; }
以上是关于hdoj 1258(DFS)的主要内容,如果未能解决你的问题,请参考以下文章