[2010复赛讲义二2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2010复赛讲义二2

2010复赛讲义二 动态规划 例1:设有一个三角形的数塔,顶点结点称为根结点,每个结点有一个整数值。从顶点出发,可以向左走,也可以向右走。问题:当三角形数塔给出之后,找出一条路径,使路径上的值为最大。若这样的路径存在多条,任意给出一条即可。 动态规划法的解题过程为: 自顶向下的分析,自底向上的计算。 分析:(1)从底层开始,本身数值即为最大值。 (2)倒数第二层的计算,将决定于底层。 (3)最后路径为13-8-26-15-24 数据结构: 数组g(1 to n,1 to n, 1 to 3) 表示数塔。 G(I,j,1)----表示位置(I,j)结点本身数值。 G(I,j,2)----能取得的最大值 G(I,j,3)----前进方向,0――向下,1――右下。 程序清单: program fs5_1; var i,j,n:integer; g:array[1..100,1..100,1..3] of integer; begin randomize; writeln(input n:);readln(n); for i:=1 to n do begin for j:=1 to i do begin g[i,j,1]:=random(99)+1; write(g[i,j,1]:3); g[i,j,2]:=g[i,j,1];g[i,j,3]:=0; end; writeln; end; writeln; for i:=n-1 downto 1 do for j:=1 to i do if g[i+1,j,2]g[i+1,j+1,2] then g[i,j,2]:=g[i,j,2]+g[i+1,j,2] else begin g[i,j,2]:=g[i,j,2]+g[i+1,j+1,2]; g[i,j,3]:=1; end; writeln(max=,g[1,1,2]); write(g[1,1,1]); j:=1; for i:=1 to n-1 do begin j:=j+g[i,j,3]; write(?,g[i+1,j,1]:2 end; end. 例2:求最长不下降序列。 设有一个正整数的序列:b1,b2,…bn,对于下标i1i2…il,若有bi1=bi2=…=bil,则称存在一个长度为L的不下降序列。 例如,下列数列 13 7 9 16 38 24 37 18 44 19 21 22 63 15 对于下标i1=1,i2=4,i3=5,i4=9,i5=13,且满足 13<16<38<44<63 则存在长度为5的不下降序列。 但也存在其他的不下降序列: i1=2,i2=3,i3=4,i4=8,i5=10,i6=11,i7=12,i8=13. 当b1,b2,…,bn给出之后,求出最长的不下降序列。 (1)数据结构:n:表示数列的个数。 b(1 to n,1 to 3) 其中:b(I,1)表示第I项的数值本身。 b(I,2)表示从第I项到最后一项最长不下降序列的长度。 b(I,3)链接字,表示最长不下降序列经过此项之后,后面继续的项。当b(I,3)=0时表示链接结束。 (2)算法分析:以上面的数列为例: 1  2 3 4  5  6  7  8  9  10 11 12 13 14 13 7 9 16 38 24 37 18 44 19 21 22 63 15 7  8 7 6 3 4 3 5 2 4 3 2 1 1  4 3 4 8 9 7 9 10 13 11 12 13 0 0 第一行为下标,即数据项的位置;第二行为数据项本身。第三行为长度,长度为1表示最长的长度为1,即数本身;第四行为链接字,0表示无链接。 过程:A、首先从倒数第二项开始计算,由于在它的后面仅有一项,因此仅仅作一次比较,由于63>15,所以从63出发,不能作任何链接,长度仍为1。 B、再看倒数第三项22,在它的后面有2项,因此必须在后面的2项中,找出比它大的,最长的作为链接,修改22的长度和链接指针,成为左下图: 11 12 13 14    22 63 15 2 1 1 13 0 0 C、再到倒数第四项21,在它的后面有3项,因此必须在后面的3项中,找出比它大的

文档评论(0)

wangz118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档