最大子矩阵和问题dp

时间:2023-12-10 21:41:02

给定一个矩阵 matrix,其中矩阵中的元素可以包含正数、负数、和0,返回子矩阵的最大累加和。例如,矩阵 matrix 为:
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
拥有最大和的子矩阵为:
9 2
-4 1
-1 8
其和为15。

package demo2;

import java.util.*;
public class Main1{ public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int matrix[][]={{0,-2,-7,0 },{9 ,2 ,-6 ,2},{-4,1,-4,1},{-1,8,0,-2}};
maxSum(matrix); }
public static void maxSum(int [][]m){
if(m.length==0||m==null)
return;
int max=0;
int col=m[0].length;
int row= m.length;
for(int i=0;i<row;i++){
int []arr = new int[col];
// Arrays.fill(arr, 0);
for(int j=i;j<row;j++){
for(int k=0;k<col;k++){
arr[k]+=m[j][k];
}
max = Math.max(maxSum(arr), max);
}
}
System.out.println(max);
}
public static int maxSum(int []arr){
int max=0,sum=0;
for(int i=0;i<arr.length;i++){
if(sum<=0)
sum=arr[i];
else
sum+=arr[i]; max=Math.max(sum, max);
}
return max;
} }