dfs题目
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int num[13],temp[13],flag,t,n;
void dfs(int sum,int index,int cnt)
{
int i;
if(sum==0)
{
flag=1;
printf("%d",temp[0]);
for(i=1;i<cnt;i++)
printf("+%d",temp[i]);
printf("\n");
return;
}
for(i=index;i<n;i++)
{
if(i==index||num[i]!=num[i-1])
{
temp[cnt]=num[i];
dfs(sum-num[i],i+1,cnt+1);
}
}
}
int main()
{
int i;
while(1)
{
flag=0;
scanf("%d%d",&t,&n);
if(n==0) break;
memset(num,0,sizeof(num));
memset(temp,0,sizeof(temp));
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
printf("Sums of %d:\n",t);
dfs(t,0,0);
if(!flag)
printf("NONE\n");
}
return 0;
}