C++前缀和

有一个数组{2,1,3,6,4},询问三次结果: a[5] = {2, 1, 3, 6, 4}

1.数组第1到第2个元素的和是多少?

2. 数组第1到第3个元素的和是多少?

3. 数组第2到第4个元素的和是多少?

 

 

没有用前缀和的原始用法:

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 int main(){
 5     int a[5]={2,1,3,6,4};
 6     for(int i=0;i<3;i++){
 7         int l,r;
 8         cin>>l>>r;
 9             int sum =0;
10         for(int j=l-1;j<r;j++){
11             sum+=a[j];
12         }
13         cout<<"sum:"<<sum<<endl;
14     }
15     return 0;
16 }
原始暴力方法

使用了前缀和的方法是:

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 int main(){
 5     int a[5]={2,1,3,6,4};
 6     int s[6];//定义前缀和数组
 7     s[0]=0;
 8     for(int i=1;i<6;i++){
 9         s[i]=s[i-1]+a[i-1];
10     }
11     for(int i=0;i<3;i++){
12         int l,r;
13         cin>>l>>r;
14         cout<<s[r]-s[l-1]<<endl;
15     }
16     return 0;
17 }
前缀和方法

 

posted @ 2025-01-05 15:49  TP_003  阅读(12)  评论(0)    收藏  举报