1).前缀和算法
用于更快捷简便地解决关于“序列的前n项和”或由其延伸的一系列问题。
随着编写代码的熟练大多数人容易使用区间求和:
#include<iostream>
using namespace std;
int main()
{
int n,i;
cin>>n;
int a[n];
for(i=0;i<n;i++){
cin>>a[i];}
int sum=0,l,r;
cin>>l>>r;
for(i=l;i<=r;i++){
sum=a[i]+sum;}
cout<<sum;
return 0;
}
这种数据量稍微大一点就有可能超时,而我们如果使用前缀和的方法来做的话就能够将时间复杂度大幅度降低,提高运算效率。
1.一维前缀和:
用于解决下标区间内的数组的和可用前缀和相减;也可扩展用于统计某个下标区间内某个数字出现的个数
#include<iostream>
using namespace std;
int main()
{
int n,i;
cin>>n;
int a[n],sum[n];
for(i=1;i<=n;i++)
{
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
return 0;
}
2.二维前缀和:
由一