• 大小: 1.21KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-02-21
  • 标签:

资源简介

回溯法解决0-1背包问题

资源截图

代码片段和文件信息

#include 
#include 
using namespace std;
#define MAX_NUM 200

int n = 0 W = 0;
int w[MAX_NUM] v[MAX_NUM];
int cw = 0 cp = 0;
int x[MAX_NUM] bestx[MAX_NUM];
int bestp = 0;
int sumw = 0 sumv = 0;

int bound(int i)
{
int rp = 0;
while (i <= n)
{
rp += v[i];
++i;
}
return cp + rp;
}

void backstrack(int t)
{
if (t > n)
{
for (int i = 1; i <= n; ++i)
{
bestx[i] = x[i];
}
bestp = cp;
return;
}
if (cw + w[t] <= W)
{
x[t] = 1;
cw += w[t];
cp += v[t];
backstrack(t + 1);
cw -= w[t];
cp -= v[t];

评论

共有 条评论