题解 | 最大序列和

最大序列和

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

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        int*dp=(int*)malloc(sizeof(int)*(n+1));
        int*arr=(int*)malloc(sizeof(int)*n);
        for(int i=0;i<n;i++)scanf("%d",arr+i);
        dp[0]=0;
        for(int i=0;i<n;i++){
            if(dp[i]>=0)dp[i+1]=dp[i]+arr[i];
            else dp[i+1]=arr[i];
        }
        int max=INT_MAX+1;
        for(int i=1;i<n+1;i++){
            if(dp[i]>max)max=dp[i];
        }
        printf("%d\n",max);
        free(dp);
        free(arr);
    }
    return 0;
}

全部评论

相关推荐

哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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