题解 | 最大序列和

最大序列和

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;

//给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。
//对于S的所有非空连续子序列T,求最大的序列和。
//变量条件:N为正整数,N≤1000000,结果序列和在范围(-2^63,2^63-1)以内。

//第一行为一个正整数N,第二行为N个整数,表示序列中的数。

int s[1000001];
int T[1000001];//表示当序列有n个元素时,其最大值。


int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &s[i]);
        }
        T[1] = s[0];
        int currentmax = T[1];
        for (int i = 2; i <= n; i++) {
            if (T[i - 1] <= 0) {
                T[i] = s[i - 1];
            } else {
                T[i] = T[i - 1] + s[i - 1];
            }
            currentmax = max(T[i], currentmax);
        }
        printf("%d\n", currentmax);
    }
    return 0;
}

全部评论

相关推荐

04-08 11:55
已编辑
巨人网络_招聘
投递巨人网络等公司6个岗位 > 笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务