下载此文档

动规-路径.ppt


文档分类:汽车/机械/制造 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
如下图所示为一个数字三角形,请编程计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。(只要求输出总和) 规定: ⑴一步可沿左斜线向下或右斜线向下走; ⑵图形行数小于等于 100 ; ⑶三角形中的数字为 0,1,…, 99 ; 输入:右下图数据应以如下所示格式输入 5(行数)7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出: 30数字三角形按照三角形的行进行阶段划分,若行数为 n,则可把问题看做一个 n-1 个阶段的决策问题。先求出第 n-1 阶段各点到第 n行的最大和,再依次求出第 n-2 阶段、第 n-3 阶段…第1阶段各点至第 n行的最大和。设 f[i,j] 为从第 i阶段中的第 j个点至第 n行的最大和; 由于 f[i,j] 只和第 i+1 阶段的状态和本阶段的点有关系,符合无后效性原则;在每一个阶段都要求出这个阶段的各个点到第 n行的最大和,也符合最优化原则。因此可以用动态规划的方法来求解,以走到每一行时所在的位置作为状态,决策就是向左下走或向右下走。其状态转移方程可以写为: f[i,j]=max{ a[i,j]+f[i+1,j] , a[i,j]+f[i+1,j+1] } ( i=1,2,3,4, …,n-1, 1<=j<=i ) f[n,j]=a[n,j] ( 1<=j<=n ){初始状态} 最后, f[1,1] 即为所求。 var n,i,j:integer; a:array[1..100,1..100] of integer; f:array[1..100,1..100] of integer; begin readln(n); for i:=1 to n do for j:=1 to i do read(a[i,j]); for i:=1 to n do f[n,i]:=a[n,i]; for i:=n-1 downto 1 do for j:=1 to i do if f[i+1,j]>f[i+1,j+1] then f[i,j]:=f[i+1,j]+a[i,j] else f[i,j]:=f[i+1,j+1]+a[i,j]; writeln(f[1,1]); end. 阶段状态决策状态转移方程 45265 7 12 10 10 20 13 10 23 21 30 下图所示是城市道路示意图。每条边上的数字为该段街道的长度。求从 A到B地(只允许往右和往上走)的最短路径长度。 1 3 2 3 2 2 1 4 2 3 4 5 2 3 1 2 2 3 2 1 4 2 2 1 1 2 2 3 3 3 4 A(0,0) B(3,4) 街道最短路径我们以图中的对角线行来划分阶段,共 m+n 个阶段。设 d[i,j] 表示点(0,0) 到点(i,j) 的最短路径长度, v[i,j] 表示点(i-1,j) 到点(i,j) 的竖向距离, h[i,j] 表示点(i,j-1) 到点(i,j) 的横向距离,则 d[i,j]=min{ d[i-1,j] +v[i,j] , d[i,j-1] +h[i,j] } 1 3 2 3 2 2 1 4 2 3 4 5 2 3 1

动规-路径 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wc69885
  • 文件大小0 KB
  • 时间2016-06-26