- 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复赛讲义二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)