#include<stdio.h>
const int N=1010;
int num[N][N];
int sum[N][N];
int main()
{
int n,m,p;
scanf("%d %d %d",&n,&m,&p);
//原数组
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d",&num[i][j]);
}
// 处理前缀和数组
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+num[i][j];
}
while(p--)
{
int x1,y1,x2,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
printf("%d\n",sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]);
}
return 0;
}
二维前缀和
最新推荐文章于 2024-08-27 17:53:55 发布
该篇文章主要介绍了如何使用C语言编程解决一个问题,即给定一个二维整数数组,计算指定子矩阵的和。通过计算前缀和数组,实现快速查询任一子矩阵的和。
摘要由CSDN通过智能技术生成