版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华南农业大学算法分析与设计课程实验专业年级:10信息与计算科学2班学生学号:22号学生姓名:梁高鼎实验题目:用动态规划法求解0-1背包问题指导老师:梁茹冰实验时间:2012年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+a i .weight = limitW)copi =1;if (i n-
2、1)find( i +1, tw+a i .weight, tv);elsefor (k=0;kmaxv)if (i n-1)find( i +1, tw, tv -a i .value);else for (k=0;kn;+k)opti on k=copk;maxv=v -a i .value;2.2.2非递归实现(动态规划法)int knapsack( int &n, int &C, int sM, int pM, int V M【M)inti,j;for (i=0;i=n;i+)for (j=0;jj)Vij=Vi-1j;else if (si=j)Vij=maXW-1j,Vi-1j-s
3、i+ pi);return V n q;void traceback( int n, int q int s M, int x M, int VM【M) for (int i=1;i8 100 120输出结果:2.6、算法时间复杂度2.6.1递归方法:0( n3)2.6.2非递归方法:0( n3)三、总结通过本次实验,让我意识到我对编程的不足,但也了解到自己的成长空间还很大。附录:源代码(1)递归实现:#i nclude #defi ne N 100 /最大物品总种数int n;物品总种数float limitW;/限制的总重量float totV;/全部物品的总价值float maxv;/解
4、的总价值int optionN; 解的选择int copN;/当前解的选择struct /物品结构float weight;float value;aN;void find(int i,float tw,float tv)int k;/物品i包含在当前方案的可能性if(tw+ai.weight = limitW)copi=1;if(in-1)find(i+1,tw+ai.weight,tv);else for(k=0;kmaxv)if(in-1) find(i+1,tw,tv-ai.value);elsefor(k=0;kn;+k) optionk=copk; maxv=tv-ai.value
5、;int main()int k;float w,v;printf( 输入物品种数 :); scanf(%d,&n);printf( 输入各物品的重量 :); for(k=0;kn;+k) scanf(%f,&w);ak.weight = w;printf( 输入各物品的价值 :); for(totV=0.0,k=0;kn;+k) scanf(%f,&v);ak.value = v; totV += v;printf( 输入限制重量 :); scanf(%f,&limitW);maxv=0.0; for(k=0;kn;+k)copk=0; find(0,0.0,totV);printf(”选择
6、的物品:”); for(k=0;k n;+k) prin tf(%d,optio nk);printf(n 总价值为:f,maxv); getchar();getchar();return 0;(2)非递归实现:#include using namespacestd;#defi ne maXa,b) ab?a:b#defi ne M100void display( int &n, int &C, int sM, int pM)int i;coutn;coute ndl;cout Ccoute ndl;cout please in put w:e ndl;s0=0;for (i=1;i si;c
7、out please in put ve ndl;p0=0;for (i=1;i pi;int knapsack( int &n, int &C, int sM, int pM, int V M【M) int i,j;for (i=0;i= n;i+)for (j=0;jj)Vij=Vi-1j;else if (si=j)Vij=maXW-1j,Vi-1j-si+pi); returnVn q;void traceback( int n, int C int s M, int x M, int V M M)for (int i=1;i= n;i+)if (Vi q=Vi-1 q)xi=0;C=C si; ;void main()int i,j,n,C;char ch;int s M,P【M,x M;int V M M;while (1)display( n,C,s,p);cout运算结果如下:e ndl;for (i=1;i=n;i+)xi=0;kn apsack (n ,C,s,p,V);cout ;for (j=0;j=C;j+)coutvvjvv ;coute ndl;for (i=0;i=n;i+)coutvvivv ;for (j=0;j=C;j+) coutVijcoute ndl;coute ndl;COUt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年四川省甘孜藏族自治州高考物理全真模拟密押卷(含答案解析)
- 2026-2027学年湖南省常德市高三下学期第五次调研考试物理试题(含答案解析)
- 工厂设备升级专员2026年二季度设备升级改造总结
- 办公区域节电防暑安全常识课件
- 2026 年新学期:小学开学第一课珍爱生命健康成长
- 2026年秋季幼儿园开学第一课 新学期收心教育主题班会
- 1.1.1 多边形的内角 课件 2026-2027学年湘教版数学八年级下册
- 鼻胆管引流管护理查房
- 不育症中医针灸治疗学
- 腰间盘突出护理诊断查房
- 德语生物化学词汇表
- 2026放射工作人员考试题库(含答案)
- (2026年)检验检测机构资质认定“一单一库”的学习与解读(2026年实施)课件
- 核心素养导向的初中七年级英语单元整体教学设计:Once Upon a Time (基于人教版七年级下册Unit 8)
- 卫生院统计报工作制度
- 2025-2030声波治疗仪市场前景展望及未来经营优势可行性研究报告(-版)
- 2025至2030中国抗纤维化药物市场调研及战略规划报告
- 深度解析(2026)《YDT 6189-2024 面向电信运营商的用户数据标签管理技术要求》
- 无线电科普教学课件
- GB/T 7714-2025信息与文献参考文献著录规则
- 2025海南东方市招聘社区专职工作人员196人备考题库(第1号)附答案详解(典型题)
评论
0/150
提交评论