您的位置:首页 > 其它

Sum It Up

2015-04-06 20:01 148 查看

http://acm.hdu.edu.cn/showproblem.php?pid=1258

#include<iostream>

using namespace std;

int sum,a[1010],b[1010],f,n,k;

void dfs(int x,int num,int cur)

{

 if(x==sum)

 {

  f=1;

  cout<<b[0];

  for(int i=1;i<num;i++)

  {

   cout<<"+"<<b[i]; 

  }   

  cout<<endl;

  return;

 }

 for(int i=cur;i<n;i++)

 {

     if(x+a[i]<=sum)

  { 

   b[num]=a[i];

   dfs(x+a[i],num+1,i+1);

   while(a[i]==a[i+1])

   i++;

  }

 }

}

int main()

{

 while(cin>>sum>>n,sum||n)

 {

  for(int i=0;i<n;i++)

  cin>>a[i];

  cout<<"Sums of "<<sum<<":\n";

  f=0;

  dfs(0,0,0); 

  if(f==0)

  cout<<"NONE\n";

 }

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: