A18894. 二维前缀和 简单应用题
填空题
较难
知识点
题目描述
二维前缀和 简单应用题
题目描述
给定一个 3 行 3 列 的整数矩阵,再给出 1 次查询,求指定子矩阵内所有数字的和。
矩阵如下:
1 2 3
4 5 6
7 8 9输入格式
输入四个整数 x1 y1 x2 y2(代表左上角坐标、右下角坐标)。
输入输入
2 2 3 3
输出格式
28
提示:
求第 2 行第 2 列 到 第 3 行第 3 列这个子矩阵的和。
参考答案
#include <iostream>
using namespace std;
const int N = 10;
int a[N][N], s[N][N];
int main()
{
// 读入 3*3 矩阵
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
cin >> a[i][j];
// 计算二维前缀和
s[i][j] = a[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1];
}
}
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
// 求子矩阵和
int ans = s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1];
cout << ans << endl;
return 0;
}
上一题
下一题