题意
给出n行m列的矩阵,每次查询求左上角为 (x1,y1) 、右下角为 (x2,y2) 的子矩阵的元素之和
思路
二维前缀和维护
Go代码
package main import ( "fmt" ) func main() { var n,m,q,x1,y1,x2,y2 int fmt.Scan(&n,&m,&q) a := make([][]int,n+1) sum := make([][]int,n+1) for i := 0 ; i <= n ; i ++ { sum[i] = make([]int, m+1) } for i := 1; i <= n; i ++ { a[i] = make([]int, m+1) for j := 1; j <= m; j ++ { fmt.Scan(&a[i][j]) sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + a[i][j]; } } for ; q> 0; q -- { fmt.Scan(&x1,&y1,&x2,&y2) fmt.Println(sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1]) } }