给定一个矩阵 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; } }