Description
小南想了解一下基本的动态规划思想,毕竟后续有算法课程。所以他尝试解决一个矩阵得分问题。该问题是:一个n*m的矩阵,矩阵每个元素是一个整数(在int类型范围内),起点是左上角(第一行第一列),每次只能朝右或者朝下走到相邻的位置,不能走出矩阵。走过的数字的总和作为该位置的最终得分,求矩阵中每个位置的最大得分。例如:一个3*3的矩阵,从从左上角的1开始作为起点出发。
1 2 3
6 2 8
2 4 1
则每个位置的最大得分为:
1 3 6
7 9 17
9 13 18
Input
多组样例。每组样例的第一行为两个整数n,m(1≤n,m≤500)
接下来n行,每行m个数字,每个数字都在int范围内。
Output
对于每组测试数据,输出一个n*m的矩阵。
3 4
1 2 3 4
1 2 8 2
1 1 1 1
3 3
1 2 3
6 2 8
2 4 1
1 3 6 10
2 5 14 16
3 6 15 17
1 3 6
7 9 17
9 13 18
HINT
对于第一行和第一列的位置,每个位置的得分是固定的,来自其左边或者其上面的得分之和。
而对于中间的每一个位置,得分有两个,一个是来自其左边的,一个是来自其上面的,取高分保留。