您的位置:首页 > 其它

题目1139:最大子矩阵

2014-02-08 20:33 260 查看
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
;

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

;

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = cin.nextInt();
}
}

System.out.println(max2D(a));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: