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

一.题目解析:

算法讲解:

1.状态表示:

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

2.状态转移方程

3.初始化

我们可以在前面加上一个虚拟节点,结合状态转移方程和状态表示,可以发现越界位置,并且d[0]以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;

    }
};
相关推荐
y = xⁿ2 小时前
【LeetCodehot100】 T138 随机链表的复制 T148: 排序链表
数据结构·链表
焦糖玛奇朵婷2 小时前
盲盒抽卡机小程序搭建,探索卡牌市场
大数据·开发语言·程序人生·小程序·软件需求
liulilittle2 小时前
C++实现广播地址计算
开发语言·c++
追烽少年x2 小时前
VC++中使用GDI+自定义绘制信号灯
c++
2501_941982052 小时前
Java 实现企业微信外部群机器人:自动化消息交互
开发语言·python
学习永无止境@2 小时前
Vivado FPGA输入时钟约束
开发语言·fpga开发·fpga
梦想的旅途22 小时前
企业微信自动化操作的高效实现方案
开发语言·javascript·ecmascript
冉冰学姐8 小时前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
载数而行52010 小时前
QT的五类布局
c++·qt·学习