1 public class Main {
2
3 public int findMaxSumOneDimensions(int[] arr) {
4 int len = arr.length;
5 int max = arr[0], sum = max;
6 for (int i = 1; i < len; i++) {
7 sum += arr[i];
8 if (sum < 0)
9 sum = arr[i];
10 if (max <= sum)
11 max = sum;
12 }
13 return max;
14 }
15
16 public int findMaxSumTwoDimensions(int[][] arr, int N) {
17 int max = 0;
18 int[] b = new int[N];
19 for (int i = 0; i < N; i++) {
20 for (int j = 0; j < N; j++)
21 b[j] = 0;
22 for (int j = i; j < N; j++) {
23 for (int k = 0; k < N; k++)
24 b[k] += arr[j][k];
25 int temp = findMaxSumOneDimensions(b);
26 if (temp >= max)
27 max = temp;
28 }
29 }
30 return max;
31 }
32
33 public static void main(String[] args) throws FileNotFoundException {
34 // Scanner scanner = new Scanner(new BufferedInputStream(new
35 // FileInputStream(new File("E:\\input.txt"))));
36 Main main = new Main();
37 Scanner scanner = new Scanner(new BufferedInputStream(System.in));
38 int N = scanner.nextInt();
39 int[][] arr = new int[N][N];
40 for (int i = 0; i < N; i++) {
41 for (int j = 0; j < N; j++) {
42 arr[i][j] = scanner.nextInt();
43 }
44 }
45 System.out.println(main.findMaxSumTwoDimensions(arr, N));
46 }
47 }