【问题标题】:matrix max sum finding by removing the almost one row or almost one column通过删除几乎一行或几乎一列来查找矩阵最大和
【发布时间】:2019-03-24 23:47:43
【问题描述】:

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

Example: 
m=2, n=3

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

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

如何在java8中使用动态规划解决这个问题

【问题讨论】:

  • 你的代码在哪里?
  • 我解决了使用,正常的过程,比如选择 n*n 行/列,找到最大总和,我需要使用动态编程
  • 使用kadane算法作为子问题尝试自己实现
  • 谢谢 suvojit_007,我正在寻找算法方法

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


【解决方案1】:

基于 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 2020-04-29
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多