题解 | #最大序列和#

最大序列和

http://www.nowcoder.com/practice/df219d60a7af4171a981ef56bd597f7b

“连续序列”,直接线性dp即可
因为只能是连续序列,最值无法传递到末尾
所以使用一个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;
}


全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务