“连续序列”,直接线性dp即可
因为只能是连续序列,最值无法传递到末尾
所以使用一个maxSum来记录最值
所以使用一个maxSum来记录最值
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int N;
int seq[1000000];
long long dp[1000000];
while(cin>>N){
if(N==0) break;
cin>>seq[0];
dp[0] = seq[0];
int maxSum = dp[0];
for(int i=1;i<N;i++){
cin>>seq[i];
dp[i] = max((long long)seq[i],dp[i-1]+seq[i]);
if(dp[i]>maxSum) maxSum = dp[i];
}
cout<<maxSum<<endl;
}
return 0;
}

京公网安备 11010502036488号