Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
贴个代码,判重的方法也是跟别人那学来的,给大家点参考#include<iostream> #include<cstring> #include<cstdlib> using namespace std; void dfs(int now,int num,int cur); int t,n; int flag; int a[15]; int ans[15]; int main() { while(cin>>t>>n) { if(n==0)break; int i; for(i=0;i<n;i++)cin>>a[i]; flag=0; cout<<"Sums of "<<t<<":"<<endl; dfs(0,t,0); if(!flag)cout<<"NONE"<<endl; } return 0; } void dfs(int now,int num,int cur) { if(num==0) { flag=1; cout<<ans[0]; int i; for(i=1;i<cur;i++) { cout<<"+"<<ans[i]; } cout<<endl; return; } else { int i; int pre=-1; for(i=now;i<n;i++) { if(num>=a[i]&&a[i]!=pre) { pre=a[i]; ans[cur]=a[i]; dfs(i+1,num-a[i],cur+1); } } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator