m*n数组左上角到右下角,路径最长
输入一个m*n数组,输出左上角到右下角最长路径
基于动态规划
package testQIAnXin;
/**
* m*n数组左上角到右下角,路径最长
*/
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param matrix int整型二维数组
* @return int整型
*/
public int maxValue(int[][] matrix) {
// write code here
int m = matrix.length-1;
int n = matrix[0].length-1;
int dp[][] = new int[m + 1][n + 1];
int i, j;
dp[0][0] = matrix[0][0];
for (i = 1; i <= m; i++)
dp[i][0] = dp[i - 1][0] + matrix[i][0];
for (j = 1; j <= n; j++)
dp[0][j] = dp[0][j - 1] + matrix[0][j];
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + matrix[i][j];
return dp[m][n];
}
public static void main(String[] args) {
int[][] matrix = { { 2, 3, 1 }, { 2, 5, 3 }, { 4, 2, 1 },};
Solution s = new Solution();
System.out.println(s.maxValue(matrix));
}
}
PS:本人水平有限,文中如有错漏,欢迎大家指出。转载请注明来源。
这是一篇关于解决m*n数组中从左上角到右下角寻找最长路径的问题,采用动态规划方法。文章作者分享了其Java实现,并诚挚欢迎读者纠正错误和提出建议。
176万+

被折叠的 条评论
为什么被折叠?



