算法设计与大作业简析.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析与设计 大作业 班 级: 12信科 姓 名: 2015-6-4 指导教师: 陈 平 序号 选定题目 所用算法设计技术 1 数字三角形问题 动态规划 2 集合划分问题 分治法 3 求子集问题回溯1、数字三角形问题 一、二、实验内容实验内容 建立动态规划函数 填表 三、实验环境 8 1 0 8 1 1 0 2 7 4 4 2 7 4 7 4 4 4 5 2 6 5 4 5 2 6 5 2 6 5 一个五层数字三角形 子问题(1) 子问题(2) 问题解决 (1)根据对问题的分析,写出解决办法。 1、证明:S,S1,S2,..Sn,t是从S到t的一条数字和最大的路径,从源点S开始,设从S到下一段的顶点S1已经求出,则问题转化为求从S1到t的数字和最大的路径,显然S1,S2,...Sn,t一定构成一条从S1到t的数字和最大值的路径,如若不然,设S1,r1,r2,....rq,t是一条数字和最大的路径,则S,S1,r1,r2,....rq,t的路径经过数字和的最大值比S,S1,S2,...Sn,t的路径数字和更大,从而导致矛盾,所以数字三角形问题满足最优性原理。 2、动态规划函数: a[i][j]+=a[i+1][j] 当 a[i+1][j]a[i+1][j+1] 时 a[i][j]+=a[i+1][j+1] 当a[i+1][j]=a[i+1][j+1] 时 填表 第一行 7+23=30 第二行 3+20=23 8+13=21 第三行 8+12=20 1+12=13 0+10=10 第四行 2+5=9 7+5=12 4+6=10 4+6=10 初始化 4 5 2 6 5 你在调试过程中发现了怎样的问题?又做了怎样的改进? 答:(a)在代码编译成功后,显示屏上无任何提示语,让人有点不知所措,感觉设计的不太人性化,于是在代码中又添加了一些提示语句,使其更容易理解和操作 (b)算法设计比较简单,运行结果没有显示路径,所以还有待研究 描述你在进行实现时,主要的函数或操作内部的主要算法;分析这个算法的时、空复杂度 答:主要算法: int func() { int i,j; for(i=n-1;i=1;i--) for(j=1;j=i;j++) { if(a[i+1][j]a[i+1][j+1]) a[i][j]+=a[i+1][j]; else a[i][j]+=a[i+1][j+1]; } return a[1][1]; } 该段代码是程序的核心部分,可以根据此代码进行填表。 算法复杂度:O(T(n)∈O(n^2)) 实验结果总结 一、实验内容实验环境 实验结果总结 求子集问题 一、给定一个正整数集合X={x1,x2,…, xn}和一个正整数y,设计回溯算法,求集合X的一个子集Y,使得Y中元素之和等于y 实验内容实验环境 、、实验结果总结

文档评论(0)

妈妈王子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档