OJ_最大序列和

题干

C++实现

cpp 复制代码
#include <stdio.h>
#include <algorithm>
using namespace std;

long long s[1000001];
long long dp[1000002];//dp[i]是前i个元素中必须包含右边缘的最大子序和

int main() {
    int n;
    scanf("%d",&n);
    for(int i = 0; i< n;i++){
        scanf("%lld",&s[i]);
    }

    dp[1] = s[0];
    long long curmax = dp[1];
    for(int i = 2;i<=n;i++){
        if(dp[i-1] <= 0){
            dp[i] = s[i-1];
        }else{
            dp[i] = s[i-1]+dp[i-1];
        }
        curmax = max(dp[i],curmax);
    }
    printf("%lld",curmax);
    return 0;
}
相关推荐
qq_263_tohua1 分钟前
第107期 刷算法题
算法
2501_940315262 分钟前
98验证二叉搜索树
java·数据结构·算法
xuhaoyu_cpp_java3 分钟前
JAVA线程安全类
java·开发语言
luckycoding9 分钟前
3005. 最大频率元素计数
算法·leetcode·职场和发展
像污秽一样9 分钟前
算法设计与分析-算法效率分析基础-分治法
算法·排序算法
香水5只用六神9 分钟前
【TIM】基本定时器定时实验(2)
c语言·开发语言·stm32·单片机·嵌入式硬件·mcu·学习
我能坚持多久10 分钟前
栈与队列OJ问题详解
算法
ouliten11 分钟前
C++笔记:std::numeric_limits
c++·笔记
BatyTao13 分钟前
Python从零起步-数据容器
开发语言·python
承渊政道13 分钟前
C++学习之旅【C++伸展树介绍以及红黑树的实现】
开发语言·c++·笔记·b树·学习·visual studio