二维前缀和

796. 子矩阵的和 - AcWing题库

按自己思路写出来的代码比y总的复杂一些(二维前缀和数组的初始化部分),然后按y总的思路改了一下代码

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rpe(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=1010;
int matrix[N][N],sum[N][N];
int main(){
    int n,m,q,x1,x2,y1,y2;
    cin>>n>>m>>q;
    rep(i,1,n){
        rep(j,1,m){
            cin>>matrix[i][j];
            sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+matrix[i][j];
        }
    }
    while(q--){
        cin>>x1>>y1>>x2>>y2;
        cout<<sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/infocodez/p/15021815.html