通过删除几乎一行或几乎一列来查找矩阵最大和

时间:2018-10-20 07:10:57

标签: java data-structures java-8 dynamic-programming memoization

  

给出一个具有m行和n列的矩阵,求出最大和   删除几乎一行或一列的矩阵元素

Example: 
m=2, n=3

matrix : 
**[[1,2,-3]
[4,5,-6 ]
]**
  

输出:12,通过删除第三列然后删除
中的元素之和   [[1,2] [4,5]]

如何使用动态编程在java8中解决此问题

1 个答案:

答案 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);
}