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