版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华南农业大学算法分析与设计课程实验专业年级:10信息与计算科学2班学生学号:22号学生姓名:梁高鼎实验题目:用动态规划法求解0-1背包问题指导老师: 梁 茹 冰实验时间: 012年11月5日一、实验内容用动态规划法求解0-1背包问题 要求:(1)用递归实现(备忘录方法)(2)用非递归实现(动态规划法)二、实验步骤2.1、理解算法思想和问题要求;2.2、写出每个操作的算法2.2.1递归实现(备忘录方法)void find(int i,float tw,float tv)int k;物品i包含在当前方案的可能性if(tw+ai.weight <= limitw)copi=l;if(i<
2、n-l)find(i+1 ,tw+ai .weight,tv);elsefor(k=0;k<n;+k)optionk=copk; maxv=tv;copi=0;物品i不包含在当前方案的可能性 if(tv-ai. value>max v)if(i<n-l)find(i+1 ,tw,tv-ai .value);elsefor(k=0;k<n;+k)optionk=copk;maxv=tv-ai .value;2.2.2非递归实现(动态规划法)int knapsack(int &n,int &c,int sm,int pm,int vmm) int i,j;f
3、or (i=0;i<=n;i+)for(j=0;j<=c;j+)if(i=o|j=o)vi|j=o;else if(si>j)vij=vi-lj;else if(si<=j)viu=max(vi-lu,vi-lj-si+pi);return vnc;void traceback(int n,int cjnt sm,int xm,int vmm)for(int i=l;i<=n;i+)if(vfic=vi-lc)xi=o;elsexi=l; c=c-si;2.3、编程实现题忖要求;2.4、调试程序;2.5、实验数据及实验结果;2.5.1递归方法:输入数据:背包容量为
4、50公斤。物品1重10公斤,价值60元;物品2重20公斤, 价值100元;物品3重30公斤,价值120元。魏入物晶沖数:3输入各初品的重 = 10 20 30 输入各桝品的价100 120 輪入限罰重量隔输岀结果:2.5.2非递归方法:输入数据:背包容量为50公斤。物品1重10公斤,价值60元;物品2重20公斤, 价值100元;物品3重30公斤,价值120元。pleaseinputn :3pleaseinputtw:50pleaseinput110 20 30ipleaseinputv60 100120输出结果:2.6、算法时间复杂度2.6.1递归方法:o(n3)2.6.2非递归方法:o(n3
5、)三、总结通过本次实验,让我意识到我对编程的不足,但也了解到自己的成长空间还很大。附录:源代码(1)递归实现:#include <stdio.h>#definen 100 最大物品总种数 intn;/物品总种数float limitw;/限制的总重量float totv;/全部物品的总价值 float maxv;/解的总价值 int optionn;/解的选择 int copn;/当前解的选择 struct /物品结构float weight;float value;anj;void find(int i,float tw,float tv)int k;物品i包含在当前方案的可能性
6、 if(tw+ai.weight <= limitw) copij=l;if(i<n-l)find(i+l,tw+ai weight,tv); elsefor(k=0;k<n;+k)optionk=copk; maxv=tv;copi=0;物品i不包含在当前方案的可能性if(tv-ai. value>max v)if(i<n-l)find(i+1 ,tw,tv-ai .value);elsefor(k=0;k<n;+k) optionk=copk;maxv=tv-ai .value;int main()int k;float w,v;printfc输入物品种
7、数:”); scanf(”d“,&n);printf(u输入各物品的重量:”);for(k=0;k<n;+k) scanf(m%f&w);ak.weight = w;printf(“输入各物品的价值:”); for(totv=0.0,k=0;k<n;+k) scanf(m%f*,&v);ak.value = v;totv += v;printf(u输入限制重量:”); scanf(” f,&limitw); maxv=0.0;for(k=0;k<n;+k)copk=0; find(0,0.0,totv);print"选择的物品:”);
8、for(k=0;k<n;+k)printf(n%dm,optionk);printf(un 总价值为:%f*,maxv);getchar();getchar();return 0;(2)非递归实现:# include<iostream>using namespace std;#define max(a,b) a>b?a:b#define m 100void display(int &n,int &c,int sm,int pm)int i;cout«nplease input n:h;cin»n;cout«endl;cout
9、«nplease input tw:n;cin»c;cout«e ndl;cout«nplease input w:n«endl;s0=0;for(i=l;i<=n;i+)cin»si;cout«hplease input vh«endl;p0=0;for(i=l;i<=n;i+)cin»pfi;int knapsack(int &n,int &c,int sm,int pm,int vmmj)int i,j;for (i=0;i<=n;i+)for(j=0;j<=
10、c;j+)if(i=o|j=o)vilj=o;else if(si>j)viuj=vi-lu;else if(si<=j)viu=max(vi-l|j,vi-lu-si+pi);return vnc;;void traceback(int n,int c,int sm,int xm,int vmmj) for(int i=l;i<=n;i+)if(vic=vi-lc)xi=o;elsexi=l;c=c-si;;void main()int i,j,n,c; char ch;int sm,pm,xm;int vmmj;while(l) display(n,c,s,p);cout
11、«h运算结果如下:"«endl; for(i=l;i<i+)xi=0;knapsack(n,c,s,p,v);cout«" ”;fo 珀二 0;jv 二 c;j+)cout«j«h ”; cout«endl;for(i=0;i<=n;i+)cout«i«" ”;for(j=0;j<=c;j+)cout«vij«h ”;cout«endl; cout«endl;cout«h选择的物体向量表示为:";cout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外贸代理服务协议(2025年客户信息保密)
- 2026年广东建设职业技术学院单招职业技能考试模拟试题带答案解析
- 2026年河南女子职业学院单招综合素质笔试备考试题带答案解析
- 2026年湖南劳动人事职业学院高职单招职业适应性测试备考试题有答案解析
- 投资合作分成合同协议2025年投资比例
- 2026年湖北水利水电职业技术学院单招综合素质笔试备考题库带答案解析
- 2026年广西物流职业技术学院单招职业技能笔试参考题库带答案解析
- 碳汇项目开发服务协议(林业)2025年合同书范本
- 税务代理服务协议2025年税务服务内容
- 2026年贵州应用技术职业学院单招综合素质考试备考试题带答案解析
- GB/T 23987.3-2025色漆和清漆实验室光源曝露方法第3部分:荧光紫外灯
- DBJT15-147-2018 建筑智能工程施工、检测与验收规范
- 《智能制造技术基础》课件
- 2025年江苏省中职职教高考统考英语试卷真题(含答案详解)
- 2025年征信考试题库-征信系统架构与安全试题
- JJF(京)187-2025 卡斯通管校准规范
- 初中生寒假敬老院社会实践报告
- 技术服务类项目管理办法
- 2025年湖南省长沙市中考地理试题(解析版)
- 生物相容柔性传感性能优化-洞察阐释
- 2025年广东省高考语文试卷(含标准答案)
评论
0/150
提交评论