- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
0-1背包问题用分支限界法实现实验四
一.实验目的 1.熟悉分支限界法的基本原理。 2.通过本次实验加深对分支限界法的理解。
二.实验内容及要求,背包容量为内容:.给定n种物品和一个背包。物品i的重量是w,其价值为v? c。问应该如何选择装入背包的物品,使得装入背包中物品的总价值最大 背包问题0-1要求:使用优先队列式分支限界法算法编程,求解 三.程序列表 #includeiostream #includestack std; using namespace 100
#define N class HeapNode //定义HeapNode结点类
{
: publicweightpricedouble upper, price, weight; //upper为结点的价值上界,是结点所对应的价值,
为结点所相应的重量 //]; 活节点在子集树中所处的层序号 Nint level, x[
};
i); intdouble MaxBound( Knap();
double是价值上界, ch, //upint level);booldoubledoubledoublevoid AddLiveNode( up, cp, cw,
cwcp是相应的价值,是该结点所相应的重量,ture or falsech是 . . . .
//最大队High HeapNodestack High;
把物品重量和价值定义为双精度浮点数 ]; double w[N], p[N// 为当前价值,定义背包容量为c//cwdouble cw, cp, c; 为当前重量,cp //货物数量为 n; int main() int{
endl; 请输入背包容量:cout
c;
cin endl; cout 请输入物品的个数: n;
cin endl; 请按顺序分别输入物品的重量: cout
i;
int (i = 1; i = n; i++) for
//cin w[i]; 输入物品的重量
endl; 请按顺序分别输入物品的价值: cout
(i = 1; i = n; i++) for
//输入物品的价值 cin p[i];
;
最优值为: cout 函数 输出最大价值knap//cout Knap() endl; 调用
0;
return
}
k MaxBound(doubleint函数求最大上界//MaxBound )
{
cleft = c - cw; double //剩余容量 价值上界//double b = cp;
. . . .
//以物品单位重量价值递减装填剩余容量 k while (k = nw[] = cleft)
{
]; k cleft -= w[
]; k b += p[
++;
k}
= n) (kif 装填剩余容量装满背包] / w[ b += p[kk ] * cleft; //
b;
return
}
将一个新的活结点int lev//) , , , , AddLiveNode(voiddouble updouble cpdouble cwbool ch 插入到子集数和最大堆High中{
be; HeapNode; upbe.upper =
; cp be.price =
; be.weight = cw; be.level = lev = n) if (levHigh.push(be);
} 函数调用}//stack头文件的push bestxdouble Knap() //优先队列分支限界法,返回最大价值,返回最优解
{
i = 1; int
cw = cp = 0;
. . . .
double //best为当前最优值 bestp = 0;
// up = MaxBound(1);价值上界double 搜索子集空间树 //
while (1) //非叶子结点{
wt = cw + w[i];
double
您可能关注的文档
- 规范房屋租赁合同官方.doc
- 规范房屋租赁合同标准.doc
- 视觉识别系统VI手册.doc
- 视频制作合同精简版.doc
- 视觉的生理机制.ppt
- 角的比较-北师大版.ppt
- 角边角_华东师大版.ppt
- 解决肺癌基因检测后不能靶向治疗问题.doc
- 解决装修过程中业主心中的9个痛点.doc
- 解决问题七步法培训经典.ppt
- 免疫功能低下癌症患者的感染性休克2024(附图表) .pdf
- 三年(2022-2024)高考政治真题分类汇编专题13 民事权利与义务(解析版) .pdf
- 铍箔及铍合金箔行业相关投资计划提议 .pdf
- 2024年安全员C证操作证考试题库附答案 .pdf
- 初中地理中考真题卷合集含答案 .pdf
- 【双减教研】“双减”提质增效如何优化语文作业设计3篇(详细版) .docx
- 2024考编教资面试小学语文试讲稿年级高频面试逐字稿 .pdf
- 第01讲 一元二次方程和一元二次方程的解法(直接开平方)(5大核心考点)- 【暑假自学课】2024年新九年级数学暑假提升精品讲义(苏科版) .pdf
- 2024小学语文三年级上册:大青树下册:的小学核心素养教案 .docx
- 专题03 平行线压轴综合(选择、填空)(解析版)【常考压轴题】2023-2024学年七年级数学下册压轴题攻略(人教版) .pdf
文档评论(0)