当前位置:   article > 正文

前缀和算法详解(附C++代码示例)_c++前缀和算法

c++前缀和算法

一.什么是前缀和

       前缀和是一种常用的算法,对于一维数组,S[i]=S[i-1]+a[i],其中S数组即为前缀和数组,a数组为原数组,S[i]即表示a数组下标为0-i的值的和。


二.前缀和有什么用?

       前缀和用于高效计算数组中某个区间内元素的和,比如我们要求a数组中下标从i到j的值的和,那么当我们有前缀和数组时,只需要转化为求S[j]-S[i-1],否则,我们需要遍历i - j 。当这样的查询次数愈发增多时,就越显示出前缀和数组的高效。


三.示例

        以下代码用于给定一个长度为n的数组a,每一次查询需要得出数组a中下标从l到r的值,共需求出q次查询的结果(时间复杂度:O(n)(假设n>q))。

  1. #include <iostream>
  2. using namespace std;
  3. const int N=1e5+5;
  4. int S[N],a[N];
  5. int n,q;//n表示数组实际长度,q表示查询次数。
  6. int main()
  7. {
  8. cin>>n;
  9. for(int i=1;i<=n;i++)
  10. {
  11. cin>>a[i];
  12. S[i]=S[i-1]+a[i];
  13. }
  14. cin>>q;
  15. int l,r;
  16. while(q--)
  17. {
  18. cin>>l>>r;
  19. cout<<S[r]-S[l-1]<<endl;
  20. }
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/434026
推荐阅读
相关标签
  

闽ICP备14008679号