按自己思路写出来的代码比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; }