算法思路

算法思路

前缀和

定义

前缀和可以简单理解为「数列的前N项的和」,是一种重要的预处理方式,能大大降低查询的时间复杂度。

例题

image-20240913122012443

解题思路

$$
递推:B[0] = A[0],对于 i \ge 1 则 B[i] = B[i-1] + A[i]。

$$

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;

int N, A[10000], B[10000];

int main() {
cin >> N;
for (int i = 0; i < N; i++) {
cin >> A[i];
}

// 前缀和数组的第一项和原数组的第一项是相等的。
B[0] = A[0];

for (int i = 1; i < N; i++) {
// 前缀和数组的第 i 项 = 原数组的 0 到 i-1 项的和 + 原数组的第 i 项。
B[i] = B[i - 1] + A[i];
}

for (int i = 0; i < N; i++) {
cout << B[i] << " ";
}

return 0;
}