您的位置:首页 > 其它

hdu 1258_Sum It Up hdu

2013-07-04 17:15 337 查看
深搜

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int t,n,num[105];
int ans[105],flag;

void dfs(int x,int k,int sum)
{
int i,j;
int last=-1;
if(sum>t)
return ;
if(sum==t)
{
flag=1;
cout<<ans[1];
for(j=2;j<k;j++)
{
printf("+%d",ans[j]);
}
cout<<endl;
}

for(i=x;i<=n;i++)
{
if(sum+num[i]<=t&&last!=num[i])
{
ans[k]=num[i];
last=num[i];
dfs(i+1,k+1,sum+num[i]);
}

}

}
int main()
{
int i;
while(cin>>t>>n&&t+n)
{
for(i=1;i<=n;i++)
cin>>num[i];
flag=0;
printf("Sums of %d:\n",t);
if(num
>t)
{
cout<<"NONE"<<endl;
continue;
}
else
{
dfs(1,1,0);
if(!flag)
cout<<"NONE"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: