数字三角形-医学课件.pptVIP

  • 1
  • 0
  • 约小于1千字
  • 约 9页
  • 2018-10-22 发布于湖北
  • 举报
数字三角形-医学课件.ppt

go go go go go go go go go 数字三角形 给你一个数字三角形, 形式如下: 1 2 3 4 5 6 7 8 9 10 找出从第一层到最后一层的一条 路,使得所经过的权值之和最小或 者最大. * 分析 你会立刻发现这是一个动态规划的决策问题;每次有两种选择——向左和向右,一个n层的数字三角形完整路线有2^n条,所以当n比较大的时候,用回溯法是行不通滴。 如果用d(i,j)为从格子(i,j)出发时得到的最大和(包括格子(i,j)本身),那么可以得到状态转移方程: d(i,j)=a(i,j)+max{d(i+1,j),d(i+1,j+1)}; * 递归计算 有了状态转移方程就好办了。 int dp(int i,int j) { if(i==n) return d[i][j]=a[i][j]; else return d[i][j]+=max(dp(i+1,j),dp(i+1,j+1)); } * 重叠子问题 这样做是正确的,但是时间效率太低,其原因在于重复计算。 1,1 2,1 2,2 3,1 3,2 3,2 3,3 4,1 4,2 4,2 4,3 4,2 4,3 4,3 4,4 * 记忆化搜索 显而易见,这个算法就是最简单的搜索算法。时间复杂度为2n,明显是会超时的。分析一下搜索的过程,实际上,很多调用

文档评论(0)

1亿VIP精品文档

相关文档