如何计算N*N维矩阵中的N数之和,值最大,每行每列仅选一个 用Java语言写
以下是用Java语言实现计算N*N维矩阵中的N数之和,值最大,每行每列仅选一个的代码:
public class MaxSumMatrix {
public static int maxSum(int[][] matrix) {
int n = matrix.length;
int[][] dp = new int[n][n];
dp[0][0] = matrix[0][0];
for (int i = 1; i < n; i++) {
dp[0][i] = dp[0][i-1] + matrix[0][i];
dp[i][0] = dp[i-1][0] + matrix[i][0];
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]) + matrix[i][j];
}
}
return dp[n-1][n-1];
}
public static void main(String[] args) {
int[][] matrix = {
{3, 7, 9, 2},
{2, 8, 3, 5},
{5, 2, 1, 9},
{6, 3, 8, 2}
};
int maxSum = maxSum(matrix);
System.out.println("Max sum: " + maxSum);
}
}
该算法的时间复杂度为O(N^2),空间复杂度也为O(N^2)。
原文地址: https://www.cveoy.top/t/topic/nFC 著作权归作者所有。请勿转载和采集!