- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析
实验指导书
邵阳学院信息工程系
2010年3月
实验1 最大子段和(分治法)
一、实验内容
运用分治法,编制程序求解如下问题:
给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如的最大值(1 i j n),当序列中所有整数均为负整数时,其最大子段和为0。
二、实验要求
1.进一步掌握递归算法的设计思想以及递归程序的调式技术;
2.理解这样一个观点,分治与递归经常同时应用在算法设计之中。
三、主要仪器设备
装有TC或Visual C++的PC机
四、实验步骤
1.算法分析
最大子段和问题的分治策略是:
(1)划分:按照平衡子问题的原则,将序列 a1, a2, …, an 划分成长度相同的两个子序列 a1, …, an/2 和 an/2+1, …, an ,则会出现以下三种情况:
① a1, …, an的最大子段和=a1, …, an/2的最大子段和;
② a1, …, an的最大子段和=an/2+1, …, a的最大子段和;
③ a1, …, an的最大子段和=,且
(2)求解子问题:对于划分阶段的情况①和②可递归求解,情况③需要分别计算:
,
则s1+s2为情况③的最大子段和。
(3)合并:比较在划分阶段的三种情况下的最大子段和,取三者之中的较大者为原问题的解。
分析算法的时间性能,对应划分得到的情况①和②,需要分别递归求解,对应情况③,需要两个并列for循环,时间复杂性是O n ,所以,存在如下递推式:
时间复杂性为O nlogn 。
2.参考代码
#include
int MaxSum int a[], int left, int right int sum 0, leftsum 0, rightsum 0;
int center, i, j;
int s1, s2, lefts, rights;
if left right //如果序列长度为1,直接求解
if a[left] 0 sum a[left];
else sum 0; else center left+right /2; //划分
//对应情况①,递归求解
leftsum MaxSum a, left, center ; //对应情况②,递归求解
rightsum MaxSum a, center+1, right ; //以下对应情况③,先求解s1
s1 0; lefts 0; for i center; i left; i-- lefts+ a[i]; if lefts s1 s1 lefts; //再求解s2
s2 0; rights 0; for j center+1; j right; j++ rights+ a[j]; if rights s2 s2 rights; sum s1+s2; //计算情况③的最大子段和 //合并,在sum、leftsum和rightsum中取较大者
if sum leftsum sum leftsum; if sum rightsum sum rightsum; return sum; int main int a[] -20, 11, -4, 13, -5, -2 ;
int left 0, right 5;
cout MaxSum a, left, right endl;
return 0; 实验2 最长公共子序列问题
一、实验内容
利用动态规划算法编制程序求解下面的问题:
若给定序列X x1,x2,…,xm ,则另一序列Z z1,z2,…,zk ,是X的子序列是指存在一个严格递增下标序列 i1,i2,…,ik 使得对于所有j 1,2,…,k有:zj xij。例如,序列Z B,C,D,B 是序列X A,B,C,B,D,A,B 的子序列,相应的递增下标序列为 2,3,5,7 。给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。给定2个序列X x1,x2,…,xm 和Y y1,y2,…,yn ,找出X和Y的最长公共子序列。
二、实验要求
1.熟悉最长公共子序列问题的算法;
2.初步掌握动态规划算法。
三、主要仪器设备
装有TC或Visual C++的PC机
四、实验步骤
1.算法分析
最长公共子序列问题具有最优子结构性质。设X x1 , ... , xm ,Y y1 , ... , yn ,及它们的最长子序列Z z1 , ... , zk ,则:
(1)若xm yn,则zk xm yn,且Z[k-1]是X[m-1]和Y[n-1]的最长公共子序列
(2)若xm ! yn,且zk
您可能关注的文档
- 项目四 学习引线焊接工艺.ppt
- 项目四节理识别和分析.ppt
- 小学语文学业质量评价与研究.ppt
- 新课标下高考考试特点.ppt
- 新课改思考之《2直线与平面垂直判定》.ppt
- 新员工电子技能培训资料四.ppt
- 信号分析_part 3B滤波器组.ppt
- 信息安全“SQL注入”答辩 广职勿下.ppt
- 信息及信息特征(一).ppt
- 形状特征与相对位置定形.ppt
- 《网络技术与教育应用》实验指导书.doc
- 《中国种子植物主要分科》试题库.doc
- 【2014复习备考】2014届高考化学《红对勾》系列一轮复习课时作业14元素周期律.doc
- 【2014复习备考】2014届高考化学《红对勾》系列一轮复习物质结构 元素周期律单元综合测试.doc
- 【地理】福建省南安一中2011届高三上学期期末考试.doc
- 【高考调研】2014届高考生物一轮复习高效测评:选修一 生物技术实践.doc
- 【红对勾】2014届高三物理一轮总复习:单元综合测试十六 波粒二象性 原子结构和原子核.doc
- 【记叙文】2014年各区一模试题分类汇编(现代文阅读-记叙文).doc
- 【价格】PCI数据采集卡 250K 16位 电流电压信号采集卡 带开关控制功能)系列)图.doc
- 【接入网宝典】第48期-ADSL线路维护指导.doc
文档评论(0)