import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.Scanner;
import java.util.Arrays;
class Main
{
public static final boolean DEBUG = false;
public static int max1D(int[] a)
{
int sum = 0, max = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i++) {
if (sum < 0) sum = a[i];
else sum += a[i];
max = Math.max(max, sum);
}
return max;
}
public static int max2D(int[][] a)
{
int n = a[0].length;
int[] b = new int[n];
int max = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i++) {
Arrays.fill(b, 0);
for (int j = i; j < a.length; j++) {
for (int k = 0; k < a[0].length; k++) {
b[k] += a[j][k];
}
max = Math.max(max, max1D(b));
}
}
return max;
}
public static void main(String[] args) throws IOException
{
Scanner cin;
int n;
if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}
while (cin.hasNext()) {
n = cin.nextInt();
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = cin.nextInt();
}
}
System.out.println(max2D(a));
}
}
}
题目1139:最大子矩阵
最新推荐文章于 2025-02-16 21:35:47 发布