top1编程
← 返回题目
题解

【入门】子矩阵求和

1 条题解

  • 0
    @ 2026-7-28 22:10:13
    #include<bits/stdc++.h>
    using namespace std;
    long long a[1001][1001];
    long long b[1001][1001];
    
    int main(){
    	int n,m,k;
    	cin>>n>>m>>k;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
                //求全部的网格
    			b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];//二维数组前缀和 
    		}
    	}
    	while(k--){
    		int x1,y1,x2,y2;
    		cin>>x1>>y1>>x2>>y2;
            //求当前部分的和
    		cout<<b[x2][y2]-b[x1-1][y2]-b[x2][y1-1]+b[x1-1][y1-1]<<endl; 
    	}
    }
    
    • 1