题解 | #最大序列和#

最大序列和

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

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int MAX=1000000;
long long dp[MAX];
long long arr[MAX];
int main()
{
    int N;
    while(scanf("%d",&N)!=EOF)
    {
        long long result;
        for(int i=0;i<N;i++)
        {
            scanf("%lld",&arr[i]);//自己定义的数据类型,自然要对应使用
        }
        dp[0]=arr[0];
        for(int i=1;i<N;i++)
        {
            dp[i]=max(dp[i-1]+arr[i],arr[i]);//问题在于使用到当前位置的最大值,是之前的最大值再加上当前的位置的arr值,还是直接使用当前位置的值作为最大值。
        }
        result=dp[0];
        for(int i=1;i<N;i++)
        {
            if(dp[i]>result)
            {
                result=dp[i];
            }
        }
        printf("%lld\n",result);
    }

}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务