深度优先搜索
程序员文章站
2022-05-23 19:32:12
...
深度优先搜索
枚举所有完整路径以遍历所有情况的搜索方法。
使用递归可以很好实现深度优先搜索。
例题:有n件物品,每件物品的重量为w[i],价值为c[i]。现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,求最大价值(1<= n <= 20)
#include<stdio.h>
void dfs(int index,int weight,int value);
int V,n; //背包容量,商品个数
int w[30],v[30];//商品重量,商品价值
int maxvalue=0;
int main()
{
scanf("%d%d",&n,&V);
for(int i=0;i<n;++i){
scanf("%d",&w[i]);
}
for(int i=0;i<n;++i){
scanf("%d",&v[i]);
}
dfs(0,0,0);
printf("%d\n",maxvalue);
return 0;
}
void dfs(int index,int weight,int value)
{
if(n==index){
return;
}
dfs(index+1,weight,value);
if(weight+w[index]<=V&&value+v[index]>maxvalue){
maxvalue=value+v[index];
}
dfs(index+1,weight+w[index],value+v[index]);
}
下一篇: *创始人威尔士因内讧失业