顶部到底边的最佳路径(最大值)
典型的递归题目
D(r, j) 出发,下一步只能走 D(r+1, j) 或者 D(r+1, j+1)
故对于N行的三角形:
递归:
if( r == N )
MaxSum(r,j) = D (r,j);
else
MaxSum(r,j) = Max( MaxSum(r+1,j) , MaxSum(r,j+1) ) + D(r,j);
如果仅按这样编写, 则程序的时间复杂度是巨大的。
递推:
从下向上进行选择
共有n行,从n-1行看起,
如下图中 先看 第4行 第1列 “ 2 ” ,其下一行中 “ 4 ” , “ 5 ” 与 “ 2 ” 相邻 ,与 “ 2 ” 之和最大的是 “ 5 ” ,得到结果 “ 7 ”
同理 第4行 第2列 “ 7 ” ,其下一行中 “ 5 ” , " 2 " 与 “ 7 ” 相邻 ,与 “ 7 ” 之和最大的是 "5 " ,得到结果 “ 12 ”
etc.........