01リュックサックのDFS解法
584 ワード
01リュックサックは、M個の物品を取り出して空間Wのリュックサックにいくつか入れ、各物品の体積はW 1,W 2......Wnであり、それに対応する価値はP 1,P 2......Pnである.最大の価値を得る案を求める.
#include
struct t
{
int wi;
int vi;
}t[105];
int n,c;
int max=0;
void DFS(int q,int dw,int dv)
{
if(q==n)
{
if(dw<=c && dv>max)// , ;
max=dv;
return ;
}
dw+=t[q].wi;
dv+=t[q].vi;
DFS(q+1,dw,dv);//
dw-=t[q].wi;
dv-=t[q].vi;
DFS(q+1,dw,dv);//
}
int main()
{
scanf("%d%d",&n,&c);
int i,j;
for(i=0;i