求解0/1背包问题及左右剪枝 回溯法
装入背包的物品重量和恰好为W
#include<stdio.h>
#define MAXN 20
int n,W,k;
int w[MAXN],v[MAXN];
int x[MAXN];
int maxv=0;
void dfs(int i,int tw,int tv,int rw,int op[])
{
if(i>n)
{
if(tw==W&&tv>maxv)
{
maxv=tv;
int j;
for(j=1;j<=n;j++)
x[j]=op[j];
}
}
else
{
if(tw+w[i]<=W)
{
op[i]=1;
dfs(i+1,tw+w[i],tv+v[i],rw-w[i

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



