版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆大学实验报告实验题目: 动态规划的应用 学 院: 计算机学院 专业班级: 信息安全1班 年 级: 2011级 姓 名: * 学 号: 2011* 完成时间: 2013 年 6 月 1 日指导教师: 陈 波 重庆大学教务处制重庆大学本科学生实验项目任务书实验题目动态规划的应用学院计算机学院专业信息安全1班年级2011任务描述:有m排n列的柱桩,每一排的柱桩从左向右标号为1,2,n,且在每个柱桩上预先放好价值不一样的宝石。现在有位杂技演员从第一排的第1号柱桩开始跳跃,每次都必须跳到下一排的柱桩上,且每次跳跃最多只能向左或向右移动一个桩子。也就是说如果现在杂技演员站在第j号桩上,那么他可跳到下一
2、排的第j号桩上,也可跳到下一排的第j-1 (if j>1)或者 j+1 (if j<n) 号桩上,并得到桩上的宝石。计算出一条最佳的跳跃顺序,使杂技演员获得的宝石的总价值最大。(输入)4 4 (4排4列的柱桩,空格隔开)1,1, 1, 1 (放在第1排各桩上的宝石价值,逗号隔开)1, 5, 1, 1 。2 ,1, 10, 1 。20 ,1, 1, 1 (放在第4排各桩上的宝石价值) (输出)28 (最大价值)1 (开始位置,固定)2 (在第二排的位置)1 (在第三排的位置)1 (在第四排的位置)p 设计要求:a.单人独立完成;b.提交名为 学号_姓名_PJ.rar 的压缩文件,含如
3、下内容:1). 完整的源码 2).不依赖于IDE环境的可执行文件及测试数据 3).电子版本项目报告,报告中至少包括对算法思想、递推方程式及该问题的最优子结构性质、程序结构的描述以及计算复杂度分析, 以及测试结果c. 第15周周五之前交,请直接提交至SAKAI。说明:1. 不依赖于IDE环境的可执行文件指exe及其支持dll,测试数据均在同一目录中,在任意一台Win XP机器上直接双击exe即可运行。2. 测试数据不少于20排20列,按照前述的格式放在test.txt文件里,执行结果存入output.txt文件里参考资料:Algorithm Design, Jon Kleiberg. Eva T
4、ardos, Cornell University任务下达日期 2013 年 5月 26 日完成日期2013年 6 月 1 日说明:学院、专业、年级均填全称,如:计算机学院、计算机科学与技术、2011。实验报告正文主要内容包括:1 算法思想 (a), 使用动态规划自下而上方法,定义数组gemij表示第i排第j列木桩上的宝石数,数组maxbij表示从第i排第j列木桩到最后一排木桩所获得的最大宝石数。公式为: maxbij=maxgemij+maxbi+1j-1,gemij+maxbi+1j, gemij+maxbi+1j+1 其中i从n取到1求maxb的伪代码如下:Dynamic-Bottom-
5、To-Up(maxb,gem,row,line)for(int i=1;i<=row;i+)maxblinei=gemlinei; /初始化maxbfor(int i=line-1;i=>1;i-)for(int j=row;j>=1;j-) maxbij=maxgemij+maxbi+1j-1,gemij+maxbi+1j, gemij+maxbi+1j+1 由上述代码可知,最多两个for循环,所以,时间复杂度为O(n2).(b), 用数组path记录获得最大价值的路径,思想是自上而下比较每排的maxb最大值,将位置赋给数组path,然后再判断该最大值的下排与之相邻的三个m
6、axb值,而后重复上面的操作,直到最后一排。求path的伪代码如下:path1=1 /因为每次都是从第一排的第一桩开始,所以,path1=1n=1;for(int i=2;i<=line;i+)max maxbin-1, maxbin, maxbin+1 pathi=n; /如果maxbin最大,则 n=n-1;由该代码可知,求path的时间复杂度为O(n)。2 关键代码描述#include<iostream>#include<fstream>using namespace std;void main()ofstream outfile; /实验结果读入outfi
7、le文件中ifstream infile; /实验数据从infile文件中读入outfile.open ("output.txt",ios:trunc);infile.open ("test.txt",ios:in);if(infile=NULL)cout<<"文件内没有内容!"int line,row;infile>>line;infile>>row;int *gem;int *maxb; /数组gem表示柱桩的宝石,数组maxb表示第i行第j列到最后一行所获得的最大宝石数;int num=abs
8、(line-row);gem=(int*) new int*line+num+1;maxb=(int*) new int*line+num+1;/动态为数组gem和maxb分配空间for(int i=0;i<=line;i+)gemi=new introw+num+1;maxbi=new introw+num+1;for(int i=1;i<=line;i+)for(int j=1;j<=row;j+)infile>>gemij; /输入柱桩的宝石for(int i=1;i<=row;i+)maxblinei=gemlinei; /初始化maxb/*maxb
9、ij=max gemij+maxbi+1j-1,gemij+maxbi+1j ,gemij+maxbi+1j+1 其中i从line取到1*/for(int i=line;i>1;i-)for(int j=row;j>=1;j-)int n=i-1; if(gemnj+maxbij-1)>=(gemnj+maxbij)&&(gemnj+maxbij-1)>=(gemnj+maxbij+1)maxbnj=gemnj+maxbij-1;continue; if(gemnj+maxbij)>=(gemnj+maxbij-1)&&(gemnj
10、+maxbij)>=(gemnj+maxbij+1)maxbnj=gemnj+maxbij;continue; if(gemnj+maxbij+1)>=(gemnj+maxbij-1)&&(gemnj+maxbij+1)>=(gemnj+maxbij)maxbnj=gemnj+maxbij+1;continue;outfile<<maxb11<<" (最大价值)"<<"n"int *path,n=1;/数组path用来记录获得最多宝石数时,经过每排的位置path=new intline
11、+num+1;path1=1; /因为每次都是从第一排的第一桩开始,所以,path【1】=1/*从上往下找出每排p取得最大值得位置,存入数组s中*/for(int i=1;i<line;i+)int m=i+1;if(maxbmn-1>=maxbmn)&&(maxbmn-1>=maxbmn+1)pathm=n-1;n=n-1;continue;if(maxbmn>=maxbmn-1)&&(maxbmn>=maxbmn+1)pathm=n;n=n;continue;if(maxbmn+1>=maxbmn)&&(m
12、axbmn+1>=maxbmn-1)pathm=n+1;n=n+1;continue;cout<<"打开output文件查看结果!"<<endl;for(int i=1;i<=line;i+)outfile<<pathi<<" (第"<<i<<"排位置)"<<"n"for(int i=0;i<=line;i+)delete gemi;delete gem;for(int i=0;i<=line;i+)dele
13、te maxbi;delete maxb;delete path;outfile.close ();infile.close();3 运行效果/*test.txt内的内容*/24 201 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 5 1 1 2 3 1 4 5 3 2 1 22 12 2 1 1 1 1 12 1 30 1 32 1 1 2 4 3 5 4 12 2 22 1 1 1 1 2620 1 1 1 11 3 4 55 4 3 2 1 11 23 1 2 3 112 2 31 2 3 4 5 6 7 8 9 0 7 5 3 3 1 4 5 3 4
14、20 9 7 6 5 4 3 2 1 6 4 3 87 3 2 5 6 4 8 96 8 9 44 6 6 3 5 7 4 3 3 3 4 5 7 8 4 5 114 6 3 6 2 6 3 8 4 5 3 2 3 4 5 6 7 8 9 126 34 6 8 4 2 8 7 64 5 2 5 2 3 4 5 6 7 81 116 3 2 2 5 2 5 1 1 1 1 1 5 5 5 5 5 5 5 51 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 41 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 7 7 7 72 2 2 2 2 2 21 1 1
15、 1 1 1 8 8 8 8 8 8 8 83 3 3 3 32 2 2 2 2 2 1 1 3 22 4 4 2 4 2 56 34 6 8 4 2 8 7 64 5 2 5 2 3 4 5 6 7 81 116 3 2 2 5 2 5 1 1 1 1 1 5 5 5 5 5 5 5 51 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 41 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 7 7 7 72 2 2 2 2 2 21 1 1 1 1 1 8 8 8 8 8 8 8 83 3 3 3 32 2 2 2 2 2 1 1 3 22 4 4 2 4
16、 2 50 9 7 6 5 4 3 2 1 6 4 3 87 3 2 5 6 4 8 96 8 9 44 6 6 3 5 7 4 3 3 3 4 5 7 8 4 5 114 6 3 6 2 6 3 8 4 5 3 2 3 4 5 6 7 8 9 126 34 6 8 4 2 8 7 64 5 2 5 2 3 4 5 6 7 81 11/*output.txt内的内容*/345 (最大价值)1 (第1排位置)2 (第2排位置)3 (第3排位置)4 (第4排位置)5 (第5排位置)6 (第6排位置)7 (第7排位置)8 (第8排位置)9 (第9排位置)8 (第10排位置)7 (第11排位置)6 (
17、第12排位置)7 (第13排位置)8 (第14排位置)9 (第15排位置)10 (第16排位置)11 (第17排位置)12 (第18排位置)13 (第19排位置)14 (第20排位置)13 (第21排位置)14 (第22排位置)15 (第23排位置)16 (第24排位置)4 总结(注明每个人的分工和工作量百分比)本组由2011*组成。2011*负责项目的所有部分,所作贡献占工作量的100%。格式要求纸张大小:A4页边距:上下左右各留20mm行距:采用固定值20磅标题:章节标题使用三号黑体、居中(大标题使用四号黑体,小标题使用小四号黑体)正文:小四号宋体页眉:“学生姓名:课程设计题目”,五号宋体,居中页脚:阿拉伯数字编页码,小五号宋体,居中参考文献:五号宋体附录:五号宋体备注:1、 学生:提交的实验报告电子文档命名为:“组号(2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小手拉大手交通安全一起守
- 2024商业广场盛大开业启幕系列(雪域之光王府井启航主题)活动策划方案-113正式版
- 经内镜逆行胰胆管造影(ERCP)护理业务学习
- Unit 4 Plants around us C (说课稿)-2024-2025学年人教PEP版(2024)英语三年级上册
- 光学树脂系列产品项目可行性研究报告写作模板-拿地备案
- 信息技术七年级上册第八课 动感温馨感恩卡-图文结合说课稿(小小导游本领大)
- 福建省龙岩市新罗区2024-2025学年二年级上学期期末数学试题参考答案
- 江苏省宿迁市(2024年-2025年小学六年级语文)部编版阶段练习(下学期)试卷及答案
- 贵州师范大学《急救临床技能训练》2023-2024学年第一学期期末试卷
- 贵州黔南科技学院《幼儿教师发展专题》2023-2024学年第一学期期末试卷
- 小班《火车开了》音乐欣赏课评课稿
- 伦理学与医学伦理学 (医学伦理学课件)
- GB/T 6344-2008软质泡沫聚合材料拉伸强度和断裂伸长率的测定
- GA/T 1740.1-2020旅游景区安全防范要求第1部分:山岳型
- 产后康复客户健康评估表格
- 企业人员组织结构图
- 个人现实表现材料1500字德能勤绩廉(通用6篇)
- 六年级上册数学单元测试-5.圆 青岛版 (含答案)
- (精心整理)高一语文期末模拟试题
- QC成果解决铝合金模板混凝土气泡、烂根难题
- 管线管廊布置设计规范
评论
0/150
提交评论