这题又是一道比较经典和基础的DFS
Sample Input
4 6 4 3 2 2 1 1
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
Sample Output
Sums of 4:
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25
如图 就是在n个数中找出总和为t的一些数 而且还不能有重复 所以我们设置一个变量来记录一下 如果a[i]和这个变量相同的话就不要搜了
void dprint(int len,int s,int last)
{
int fa=-1;
int i;
for(i=s;i<n;i++)
{
if(last-a[i]==0&&a[i]!=fa)
{
stack[len]=a[i];
int i;
for(i=0;i<len;i++)
printf("%d+",stack[i]);
printf("%d\n",stack[i]);
flag=1;
}
else
{
if(last-a[i]>0&&a[i]!=fa)
{
stack[len]=a[i];
dprint(len+1,i+1,last-a[i]);
}
}
fa=a[i];
}
}