动态规划_最大子数组和_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;

    }
};
相关推荐
想学习java初学者11 小时前
SpringBoot整合GS1编码解码
java·spring boot·后端
日月云棠11 小时前
2 快速入门实战指南
java·后端
日月云棠11 小时前
3 Dubbo 2.7 高级配置:检查控制、版本策略与协议选择
java·后端
计算机安禾11 小时前
【c++面向对象编程】第40篇:单例模式(Singleton)的多种C++实现
开发语言·c++·单例模式
叶小鸡11 小时前
小鸡玩算法-力扣HOT100-动态规划(上)
算法·leetcode·动态规划
砍材农夫12 小时前
物联网 基于netty构建mqtt协议规范(主题通配符订阅)
java·前端·javascript·物联网·netty
掉鱼的猫12 小时前
用 Solon AI 从零构建 MCP 工具服务:让 AI Agent 拥有真实世界的能力
java·llm·mcp
日月云棠12 小时前
1 分布式架构演进与Dubbo框架入门
java·后端
LuminousCPP12 小时前
数据结构 - 线性表第三篇:基于顺序表实现 C 语言通讯录(基础功能篇)
c语言·数据结构·经验分享·笔记·算法
_日拱一卒12 小时前
LeetCode:114二叉树展开为链表
java·开发语言·算法