测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题