Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1584679
  • 博文数量: 399
  • 博客积分: 8508
  • 博客等级: 中将
  • 技术积分: 5302
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 09:28
个人简介

能力强的人善于解决问题,有智慧的人善于绕过问题。 区别很微妙,小心谨慎做后者。

文章分类

全部博文(399)

文章存档

2018年(3)

2017年(1)

2016年(1)

2015年(69)

2013年(14)

2012年(17)

2011年(12)

2010年(189)

2009年(93)

分类: LINUX

2010-08-08 13:51:11

#include
#include
#include
#include
#include
using namespace std;


#define MAX 20


int a[]={5,1,7,9,2,10,11,4,13,14};
int st[MAX];
int top=-1;
int n=10;
/*
void dfs1(int start, int sum)
{
if(start==n || sum<0)
return;
if(sum==0)
{
for(int i=0;i<=top;i++)
cout<
cout<
}else{
top++;
for(int i=start;i
{
st[top]=a[i];
dfs(i,sum-a[i]); //允许重复
//dfs(i+1,sum-a[i]) //不允许重复
}
top--; //backtrace
}
};
*/
void dfs2(int start, int sum)
{
if(start==n || sum<0)
return;
if(sum==0)
{
for(int i=0;i<=top;i++)
cout<
cout<
}else{
///*不允许重复
top++;
st[top]=a[start];
dfs(start+1,sum-a[start]);
top--;
//*/
//允许重复
/*
for(int m=a[start];m<=sum;m+=a[start])
{
top++;
st[top]=a[start];
dfs(start+1,sum-m);
}
top-=sum/a[start];
*/
//不要
dfs(start+1,sum);
}
}

int main()
{
dfs(0,28);
system("pause");
return 0;
}
阅读(744) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~