#include<stdio.h>
#define N 30
int w[N], value[N], n, maxvalue = 0, V;
void dfs(int index, int sumw, int sumv)
{
if(index > n)
{
if(sumw <= V && sumv > maxvalue)
{
maxvalue = sumv;
}
return;
}
dfs(index + 1,sumw + w[index],sumv + value[index]);//选
dfs(index + 1,sumw, sumv);//不选
}
int main()
{
scanf("%d %d",&n, &V);
for(int i=1; i<=n; ++i)
{
scanf("%d", &w[i]);
}
for(int i=1; i<=n; ++i)
{
scanf("%d", &value[i]);
}
dfs(1, 0, 0);
printf("%d\n", maxvalue);
return 0;
}
c语言 背包问题dfs方法
最新推荐文章于 2023-05-14 00:59:29 发布