题解 | #【模板】二维前缀和#
【模板】二维前缀和
https://www.nowcoder.com/practice/99eb8040d116414ea3296467ce81cbbc
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(), m = in.nextInt(), q = in.nextInt(); long[][] dp = new long[n+1][m+1]; // 预处理前缀和数组 for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + in.nextInt(); } } // 读入要计算的数据并利用前缀和数组计算 while(q > 0){ int x1 = in.nextInt(), y1 = in.nextInt(); int x2 = in.nextInt(), y2 = in.nextInt(); long res = dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1]; System.out.println(res); q--; } } }