Advertisement

7-5矩阵的最小路径和

阅读量:

给定一个二维数组matrix,起始点位于左上角,每一步仅能向右或向下移动,最终抵达右下角位置。路径上所有元素的总和即为路径和,目标是找出所有可能路径中最小的路径和。
输入格式:

第一行包含两个整数m和n(1≤m, n≤1000),分别表示矩阵的行数与列数。

随后有m行数据,每行包含n个非负整数,数值范围不超过200。各数字之间以空格分隔。
输出格式:

在单独的一行中输出从左上角到右下角的所有路径中最小的路径和。
输入样例:

4 4
1 3 5 9
8 1 3 4
5 0 6 1
8 8 4 0

输出样例:

12

样例解析:

最优路径为1→3→1→0→6→1→0,其总和为12,因此返回该值。
思路分析:直接采用暴力递归搜索的方式将导致超时问题,因此我们引入动态规划方法进行求解。可以通过构建一个辅助数组b来记录从起点到当前点的最短路径长度。

例如,在第一行第一列的位置b[1][1]存储的是起点到该点的最短路长度,显然等于8。而在第一行第二列b[1][2]处,则取前一位置的值加上当前点对应的数值即可得到最短路长度。对于第一行中的其他位置j=2,3,4…同样遵循这一规则,因为无法从上方到达这些点,只能由左侧移动而来。因此无需比较多个选项,直接累加即可得出结果。

同理,在第一列中的其他位置i=2,3,4…

全部评论 (0)

还没有任何评论哟~