题目
子矩阵的最大累加和问题
java代码
package com.lizhouwei.chapter8;
/**
* @Description: 子矩阵的最大累加和问题
* @Author: lizhouwei
* @CreateDate: 2018/5/8 21:33
* @Modify by:
* @ModifyDate:
*/
public class Chapter8_17 {
public int maxSum(int[][] matrix) {
int curSum = 0;
int maxSum = Integer.MIN_VALUE;
int[] help = new int[matrix[0].length];
for (int i = 0; i < matrix.length; i++) {
curSum=0;
for (int j = 0; j < matrix[0].length; j++) {
help[j] = help[j] + matrix[i][j];
curSum = curSum + help[j];
maxSum = Math.max(maxSum, curSum);
curSum = curSum < 0 ? 0 : curSum;
}
}
return maxSum;
}
//测试
public static void main(String[] args) {
Chapter8_17 chapter = new Chapter8_17();
int[][] matrix = {{-90, 48, 78}, {64, -40, 64}, {-81, -7, 66}};
System.out.print("矩阵 matrix = {{-90, 48, 78}, {64, -40, 64}, {-81, -7, 66}}最大累加和为:");
int res = chapter.maxSum(matrix);
System.out.print(res);
}
}
结果