给出一个具有m行和n列的矩阵,求出最大和 删除几乎一行或一列的矩阵元素
Example:
m=2, n=3
matrix :
**[[1,2,-3]
[4,5,-6 ]
]**
输出:12,通过删除第三列然后删除
中的元素之和 [[1,2] [4,5]]
如何使用动态编程在java8中解决此问题
答案 0 :(得分:0)
基于kadane算法,以下代码可以正常运行
public static void main(String[] args) {
int[][] m = {
{1, 2, -3},
{4, 5, -5},
};
int N = m.length;
for (int i = 0; i < N; ++i)
m[0][i] = m[0][i];
for (int j = 1; j < N; ++j)
for (int i = 0; i < N; ++i)
m[j][i] = m[j][i] + m[j - 1][i];
int totalMaxSum = 0, sum;
for (int i = 0; i < N; ++i) {
for (int k = i; k < N; ++k) {
sum = 0;
for (int j = 0; j < N; j++) {
sum += i == 0 ? m[k][j] : m[k][j] - m[i - 1][j];
totalMaxSum = Math.max(sum, totalMaxSum);
}
}
}
System.out.println(totalMaxSum);
}