这是最笨的方法,求二维数组的子数组和的最大值的和我之前算一维数组的子数组和的最大值想法相类似,主要是在循环那里,将算子数组和的宽高的取值范围改成一致的,其他与一维数组差不多,需要判断最大值
package test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int a[][];
int i,j,l,h,n,k,sum,max;
Scanner sc = new Scanner(System.in);
System.out.print("输出数组的长度:");
h=sc.nextInt();
System.out.print("输出数组的高度:");
l=sc.nextInt();
a=new int[l][h];
System.out.println("输入数组的元素");
for(i=0;i<l;i++)
{
for(j=0;j<h;j++)
{
a[i][j]=sc.nextInt();
System.out.print(" ");
}
System.out.println("");
}
max=0;
for(n=0;n<l;n++)
{
sum=0;
for(i=0;i<l-n;i++)
{
sum=0;
for(j=0;j<h;j++)
{
for(k=i;k<=i+n;k++)
{
sum=sum+a[k][j];
}
if(max<sum)
{
max=sum;
}
}
}
}
System.out.print(max);
System.out.println("");
}
}
