蛮力法、动态规划法、回溯法和分支限界法求解

时间:2025-07-09

一、实验内容:

分别用蛮力法、动态规划法、回溯法和分支限界法求解0/1背包问题。

注:0/1背包问题:给定n种物品和一个容量为C的背包,物品i的重量

是wi,其价值为vi,背包问题是如何使选择装入背包内的物品,使得装入背

包中的物品的总价值最大。其中,每种物品只有全部装入背包或不装入背包

两种选择。

二、所用算法的基本思想及复杂度分析:

1.蛮力法求解0/1背包问题:

1)基本思想:

对于有n种可选物品的0/1背包问题,其解空间由长度为n的0-1

向量组成,可用子集数表示。在搜索解空间树时,深度优先遍历,搜索每

一个结点,无论是否可能产生最优解,都遍历至叶子结点,记录每次得

到的装入总价值,然后记录遍历过的最大价值。

2)代码:

#include<iostream>

#include<algorithm>

using namespace std;

#define N 100 //最多可能物体数

struct goods //物品结构体

{

int sign; //物品序号

int w; //物品重量

int p; //物品价值

}a[N];

bool m(goods a,goods b)

{

return (a.p/a.w)>(b.p/b.w);

}

int max(int a,int b)

{

return a<b?b:a;

}

int n,C,bestP=0,cp=0,cw=0;

int X[N],cx[N];

/*蛮力法求解0/1背包问题*/

int Force(int i)

{

if(i>n-1){

if(bestP<cp&&cw+a[i].w<=C){

for (int k=0;k<n;k++) X[k]=cx[k];//存储最优路径

bestP=cp;

蛮力法、动态规划法、回溯法和分支限界法求解.doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219