求最大连续序列和的一个巧妙方法,时间复杂度O(n)
1 # include<iostream> 2 using namespace std; 3 long long a[1000000]; 4 long long b[1000000]; //b[i]表示数列前i+1个数的最大连续序列和 5 int main(){ 6 long long n=0,i=0; 7 while(cin>>n){ 8 for(i=0;i<n;i++) 9 cin>>a[i]; 10 b[0]=a[0]; 11 long long ma=a[0]; 12 for(i=1;i<n;i++) 13 { 14 b[i]=max(b[i-1]+a[i],a[i]); 15 if(ma<b[i]) ma=b[i]; 16 } 17 cout<<ma<<endl; 18 } 19 return 0; 20 }
转载请注明出处及链接 谢谢