题目描述
有一个n行n列的int
二维数组a[][]
有m次询问
每次询问给出左上角坐标(x1,y1)和右下角坐标(x2,y2).求对应子矩阵的矩阵和
输入格式
第一行是两个整数n,m
接下来输入一个n行n列的int
矩阵
接下里m行,每行四个整数,分别是x1,y1,x2,y2
输出格式
输出m行,每行是一个询问的答案
样例输入/输出
输入数据 1
9 4
5 9 5 8 5 7 7 2 1
7 7 3 2 9 6 3 1 2
8 6 6 3 3 2 1 1 6
9 2 2 4 1 7 8 2 9
1 2 4 5 6 1 2 1 8
5 7 6 6 3 3 8 5 9
2 8 9 2 6 3 2 9 2
8 3 5 3 6 3 4 2 7
7 5 5 9 1 6 9 3 9
5 1 8 9
7 5 7 7
4 2 5 2
1 2 4 2
Copy
输出数据 1
166
11
4
24
做题!!!
首先,我们需要读取输入的n和m。然后,我们创建一个n行n列的二维数组a,并读取输入的二维数组值。
接下来,我们需要处理m次询问。对于每次询问,我们读取左上角坐标(x1, y1)和右下角坐标(x2, y2)。然后,我们使用两层循环遍历从x1到x2的行和从y1到y2的列,将对应元素累加到一个变量中。
最后,我们将每次询问的答案输出。
下面是C++的代码实现:
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int a[100][100];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
for (int k = 0; k < m; k++) {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
int sum = 0;
for (int i = x1-1; i < x2; i++) {
for (int j = y1-1; j < y2; j++) {
sum += a[i][j];
}
}
cout << sum << endl;
}
return 0;
}
对于样例输入数据1,输出为:
166
11
4
24
点个赞吧,帅哥美女们,本人为小学生。