传送门
输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。
对于每个询问输出子矩阵中所有数的和。
输入格式
第一行包含三个整数n,m,q。
接下来n行,每行包含m个整数,表示整数矩阵。
接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。
输出格式
共q行,每行输出一个询问的结果。
。。。
发现这题的xy和我现象中的xy不一样。。。
#include<bits/stdc++.h>
using namespace std;
# define ll long long
int a[1010][1010];
int sum[1010][1010];
int main()
{
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
{
scanf("%d",&a[j][i]);
sum[j][i] = sum[j-1][i] + a[j][i];
}
// for(int j = 1; j <= n; j++)
// {
// for(int i = 1; i <= m; i++)
// {
// printf("%d ",sum[i][j]);
// }
// printf("\n");
// }
while(q--)
{
int x1,y1,x2,y2;
scanf("%d%d%d%d",&y1,&x1,&y2,&x2);
int ans = 0;
for(int i = y2; i >= y1; i--)
{
ans += sum[x2][i];
ans -= sum[x1-1][i];
}
printf("%d\n",ans);
}
}