标签:
Description
Input
Output
Sample Input
4 6 4 3 2 2 1 1
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
Sample Output
Sums of 4:
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 int num[15]; 6 int way[15]; 7 int T,N; 8 int all,all_ti; 9 10 void dfs(int now) 11 { 12 if (all==T) 13 { 14 int i=1; 15 for (;i<=N;i++) 16 { 17 if (way[i]==1) 18 { 19 cout<<num[i]; 20 break; 21 } 22 } 23 for (i++;i<=N;i++) 24 { 25 if (way[i]==1) 26 { 27 cout<<"+"<<num[i]; 28 } 29 } 30 cout<<endl; 31 32 all_ti++; 33 way[now]=0; 34 all-=num[now]; 35 } 36 else 37 { 38 int last=-1; 39 for (int j=now;j<=N;j++) 40 { 41 if (way[j]==0 && num[j]+all<=T&&last!=num[j]) 42 { 43 last=num[j]; 44 way[j]=1; 45 all+=num[j]; 46 dfs(j); 47 48 } 49 } 50 way[now]=0; 51 all-=num[now]; 52 } 53 54 } 55 56 int cmp(int x,int y) 57 {return x>y;} 58 59 60 int main() 61 { 62 63 while (cin>>T>>N) 64 { 65 if (N==0) break; 66 all=all_ti=0; 67 for (int i=1;i<=N;i++) 68 { 69 cin>>num[i]; 70 way[i]=0; 71 } 72 sort(num+1,num+1+N,cmp); 73 cout<<"Sums of "<<T<<":"<<endl; 74 dfs(1); 75 if (all_ti==0) cout<<"NONE"<<endl; 76 77 } 78 return 0; 79 }
标签:
原文地址:http://www.cnblogs.com/haoabcd2010/p/5676773.html