有一个数组{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 }