思路:本题数据量为1e4,用复杂度为O(n^2) 的前缀和算法是可以过的,不过这题我用的是贪心算法,复杂度降到O(n)。
送上代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
while(cin>>n) {
int *a = new int[n+1]; //c++的动态数组方案
int ans=0, num=0;
for(int i=1;i<=n;i++) { //用贪心的思想,把复杂度降到 O(n)
cin>>a[i];
num += a[i];
if(num<0) num=0; //区间和比 0还小,该段重新计数
if(num>ans) ans=num;
}
cout<<ans<<endl;
delete []a;
}
}