AcWing 126. 最大的和--Java
原题链接
简单
作者:
Jiang锋时刻
,
2021-02-02 15:30:40
,
所有人可见
,
阅读 434
Java 代码
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n + 1][n + 1];
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
arr[i][j] = sc.nextInt();
arr[i][j] += arr[i - 1][j];
}
}
int ans = Integer.MIN_VALUE;
for(int i = 1; i <= n; i++) {
for(int j = i; j <= n; j++) {
int num = 0;
for(int k = 1; k <= n; k++) {
num = Math.max(num, 0) + arr[j][k] - arr[i - 1][k];
ans = Math.max(ans, num);
}
}
}
System.out.println(ans);
}
}
这两行代码就实现了矩阵中每一个数都是当前列第0行到当前行数字之和.
然后再用
arr[j][k] - arr[i - 1][k]
相减, 就相当于是第i行到第j行之间的和了.想请问一下这个arr[j][k] - arr[i - 1][k]该怎么理解是第k列的前缀和呀