dfs解决背包问题
#include <iostream>
///用深搜写
using namespace std;
int weight,maxvalue=0,n;///背包中能放物品的总质量weight,最大价值maxvalue,总的物品数量
int v[30],w[30];///物品的数量和价值
void dfs(int index,int sumw,int sumv)///第index件物品,选择的总质量sumw,总价值sumv
{
if(index==n)///死胡同,对所有的物品都选择完毕
{
if(sumw<=weight&&sumv>maxvalue) ///若符合条件,则更新最大值
maxvalue=sumv;
return;///要返回停止,否则就是死循环了
}
///要写index+1,不能写index++,否则出不来
dfs(index+1,sumw+w[index],sumv+v[index]); ///岔路口1:选择这件物品
dfs(index+1,sum