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;
}
#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;
}
相关文章推荐
- HDU 1258 Sum It Up(DFS)
- HDU 1258:Sum It Up
- HDU 1258 Sum It Up
- HDU 1258 Sum it up 搜索DFS
- HDU 1258 Sum It Up(DFS)
- POJ 1564 && HDU 1258 Sum It Up(dfs)
- hdu 1258 Sum It Up
- 从n个数中任取m个数 的 多种情况,每种状况对应一种写法,还有 HDU - 1258 Sum It Up 这道题;
- hdu 1258 Sum It Up 搜索
- HDU 1258 Sum It Up
- Sum It Up(HDU 1258)
- hdu 1258 Sum It Up
- HDOJ(HDU).1258 Sum It Up (DFS)
- hdu 1258和ZJU 1711 Sum It Up(dfs经典索搜)
- Sum It Up POJ 1564 HDU 杭电1258【DFS】
- 杭电 HDU 1258 Sum It Up
- hdu 1258 Sum It Up(DFS)
- Sum It Up(HDU-1258)
- hdu 1258 Sum It Up
- hdu 1258 Sum It Up 搜索