动态规划_最大子数组和_C++

一.题目解析:

算法讲解:

1.状态表示:

dpi表示以i位置为结尾,子数组的和最大

2.状态转移方程

3.初始化

我们可以在前面加上一个虚拟节点,结合状态转移方程和状态表示,可以发现越界位置,并且d0以0位置为结尾,子数组的和最大,要不影响后面填表应该为最小值min

4.填表顺序

从左向右

5.返回值

返回dp表的最大值

二.代码实现:

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n=nums.size();
        vector<int>dp(n+1);
        
        int ret=INT_MIN;
        for(int i=1;i<=n;i++)
        {
            dp[i]=max(dp[i-1]+nums[i-1],nums[i-1]);
            ret=max(dp[i],ret);
        }
        return ret;

    }
};
相关推荐
大猫和小黄5 分钟前
深入理解 Java Optional:从设计哲学到工程实战
java
数据库百宝箱15 分钟前
rum&gin索引对比
java·数据库·gin
2601_9622186120 分钟前
C语言中三种库的编译和使用方法
开发语言·c++
传奇开心果编程29 分钟前
中庸、有容、破执:仓颉编程语言的中华智慧结晶——三重哲学境界思辨
开发语言·华为·开源·软件工程
yychen_java32 分钟前
第六篇:Spring AI 实战:将 Java 业务接口封装成企业级 MCP Server
java·人工智能·spring
jimy133 分钟前
派生类重写基类虚函数(二):override的作用
开发语言·c++
_upupup1 小时前
异常(C++)
java·开发语言·jvm
ebiobiz1 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu
g10565591391 小时前
公有云_云运维服务
java·运维·服务器
hetao17338371 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法