文章
166
粉丝
68
获赞
829
访问
51.4k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<long long>a(n) ;
for(int i=0;i<n;i++)cin>>a[i];
long long max=a[0];
for(int i=1;i<n;i++){
if(a[i-1]>0) a[i]+=a[i-1];
if(a[i]>max) max=a[i];
}
cout << max << endl;
}
}
我们要求连续子序列最大和,只需要扫描这个数组,不断地更新当前序列和的最佳状态即可。对于最佳状态的判定,其实很简单,我们只需要知道前方的序列和是否大于0即可,大于0对于本次的就是有增长的,不需要分析当前数值的值,而是分析前面的序列状态,我们的目标是对于本次来说是否增长。
登录后发布评论
暂无评论,来抢沙发