POJ 1564 DFS

这题又是一道比较经典和基础的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];
}
}



posted on 2008-08-12 10:51 Victordu 阅读(465) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(5)

随笔档案(46)

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜