当前位置: 首页 > news >正文

最大子数组和-一维动态规划

最大子数组和

Solution

#include<iostream>
#include<vector>
using namespace std;
const int minf = -1e9;//普通dp做法
int maxSubArray1(vector<int>& nums) {int n = nums.size();vector<int>dp(n, minf);dp[0] = nums[0];int ans = dp[0];for (int i = 1; i < n; ++i) {dp[i] = max(dp[i - 1] + nums[i], nums[i]);ans = max(ans, dp[i]);}return ans;
}//dp+空间压缩
int maxSubArray2(vector<int>& nums) {int n = nums.size();//vector<int>dp(n, minf);int last = nums[0];int ans = last;for (int i = 1; i < n; ++i) {last = max(last + nums[i], nums[i]);ans = max(ans, last);}return ans;
}//记录区间下标
int Sum = minf, Left = 0, Right = 0;
int maxSubArray3(vector<int>& nums) {int n = nums.size();int l = 0, r = 0;int pre = nums[0];for (int r = 1; r < n; ++r) {int cur = nums[r];if (pre > 0) {cur += pre;}else {l = r;}if (cur > Sum) {Sum = cur;Left = l;Right = r;}pre = cur;}return Sum;
}
int main() {vector<int>nums = { 1,2,-3,0,2,5,6 };int ans = maxSubArray3(nums);cout << ans << " " << Left << " " << Right;return 0;
}

http://www.dtcms.com/a/325157.html

相关文章:

  • C++ 黑马 引用
  • 一款轻量、免费、无广告,强大的演示工具,支持屏幕放大、涂鸦、截图、录屏
  • PostgreSQL因为A/B switch以及group表过多导致WAL full的情况讨论
  • 托福单词词组积累 2025-08-10
  • 大模型 MCP服务案例详细讲解
  • 线程池的核心线程数与最大线程数怎么设置
  • NVIDIA Jetson AGX Orin 全景解析——边缘计算的高性能选择
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DNS欺骗、DHCP饿死)
  • VGG改进(1):基于Global Attention模块的详解与实战
  • RL代码实践 02——策略迭代
  • ai生成完成后语音通知
  • Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?
  • 如何部署图床系统 完整教程
  • python魔法属性__module__与__class__介绍
  • 学习numpy详解
  • Shell脚本-其他变量定义
  • 全面了解机器语言之kmeans
  • Redis缓存穿透、缓存击穿、缓存雪崩
  • Mock与Stub
  • 组合期权:水平价差
  • day29 消息队列
  • CST支持对哪些模型进行特征模仿真?分别有哪些用于特征模分析的求解器?
  • 信号处理函数中调用printf时,遇到中断为什么容易导致缓冲区损坏?
  • 介绍一下线程的生命周期及状态?
  • 化工设备健康管理解决方案:基于多物理场监测的智能化技术实现
  • 【系统分析师】软件需求工程——第11章学习笔记(上)
  • 堆(Java实现)
  • 大数据架构演变之路
  • [激光原理与应用-222]:机械 - 3D设计与2D设计的异同比较
  • 赋值运算符指南