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 }