用矩形nums存放数字三角形
在数字三角形中寻找一条从 顶部到底边的路径,使得路径上 所经过的数字之和最大。路径上 的每一步都只能往左下或右下走 。只需要求出这个最大和即可, 不必给出具体路径。
nums[i,j]:表示矩形中的相应数字
• 解题思路: 用矩阵 nums 存放数字三角形。 nums[i, j] : 表示矩阵中相应数字
max_sum(i, j) : 从 nums[i, j] 到底边的各 条路径中,最佳路径的数字之和。
问题:求 max_sum(0, 0)
0 1 2 3 4 0 7 1 3 8 2 8 1 0 3 2 7 4 4 4 4 5 2 6 5
递归
问题:求 max_sum(0, 0) —— 典型的递归问题。 nums[i, j] 出发,下一步只能走 nums[i+1, j] 或者 nums[i+1, j+1]。故对于 n 行的三角形:
if(i == n-1) max_sum(i,j) = nums[i,j] else max_sum(i,j) = max(max_sum(i+1,j), max_sum(i+1,j+1)) + nums[i,j]
0 1 2 3 4 0 7 1 3 8 2 8 1 0 3 2 7 4 4 4 4 5 2 6 5
max_sum(i,j):