public class Main {
public int findMaxSumOneDimensions(int[] arr) {
int len = arr.length;
int max = arr[0], sum = max;
for (int i = 1; i < len; i++) {
sum += arr[i];
if (sum < 0)
sum = arr[i];
if (max <= sum)
max = sum;
}
return max;
}
public int findMaxSumTwoDimensions(int[][] arr, int N) {
int max = 0;
int[] b = new int[N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
b[j] = 0;
for (int j = i; j < N; j++) {
for (int k = 0; k < N; k++)
b[k] += arr[j][k];
int temp = findMaxSumOneDimensions(b);
if (temp >= max)
max = temp;
}
}
return max;
}
public static void main(String[] args) throws FileNotFoundException {
// Scanner scanner = new Scanner(new BufferedInputStream(new
// FileInputStream(new File("E:\\input.txt"))));
Main main = new Main();
Scanner scanner = new Scanner(new BufferedInputStream(System.in));
int N = scanner.nextInt();
int[][] arr = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
arr[i][j] = scanner.nextInt();
}
}
System.out.println(main.findMaxSumTwoDimensions(arr, N));
}
}
poj1050 二维数组最大子序列矩阵和
最新推荐文章于 2021-11-17 15:38:11 发布