有一个数组{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;//TODO 8 cin>>l>>r; 9 10 int sum=0; 11 for(int j=l-1;j<r;j++){ 12 sum+=a[j]; 13 } 14 15 cout<<"sum:"<<sum<<endl; 16 } 17 18 return 0; 19 }原始暴力算法
前缀和方法:
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 9 for(int i=0;i<6;i++){ 10 s[i]=s[i-1]+a[i-1]; 11 } 12 13 for(int i=0;i<3;i++){ 14 int l,r; 15 cin>>l>>r; 16 cout<<s[r]-s[l-1]<<endl; 17 } 18 19 return 0; 20 }前缀和方法
标签:main,前缀,int,namespace,C++,数组,include From: https://www.cnblogs.com/SIPnnnnn/p/18653415