一维数组的前缀和用于降低求一维数组和的时间复杂度
主要原理是:
S[i] = a[1] + a[2] + … a[i]
a[l] + … + a[r] = S[r] - S[l - 1]
例如:求100内的任意区间的和。
#include<iostream>
using namespace std;
int arr[110];
int s[110];//前缀和数组
int main()
{
for (int i = 0; i <= 100; i++)//赋值arr数组
{
arr[i] = i;//注意要给arr[0]赋值为0
}
for (int i = 1; i <= 100; i++)//注意要从下标为1开始
{
s[i] = s[i-1] + arr[i];//前缀和公式
}
int l, r;
cin >> l >> r;//输入区间范围
cout << s[r] - s[l - 1];//输出结果
}
输入:1 10
输出结果: