算法设计与分析算法实现——动态规划最大子段

该博客介绍了一种使用动态规划解决寻找整数序列中最大子段和的问题。当序列所有整数都为负数时,最大子段和定义为0。通过状态转移方程dp[i]=max(dp[i-1]+a[i],a[i]),可以找到满足连续性的最大子段。同时,使用start和end数组记录最大子段的起始和结束下标。" 92798064,6676577,Magic Leap AR应用开发入门,"['AR开发', 'Magic Leap', '增强现实', '开发工具', 'SDK']
摘要由CSDN通过智能技术生成

输入:整数序列a1,a2,…,an
输出:序列的一个子段,其和Σak最大
注意:当所有整数都为负数时,定义最大子段和为0

使用动态规划,输入数组是a[n];
状态转移方程dp[i]=max(dp[i-1]+a[i],a[i])——这个状态方程可以发现,使得满足“连续”这一要求的重点在于每个dp[i]都包含了当前元素a[i];
使用两个数组start,end分别记录dp[i]的起始数组元素下标start[i]和dp[i]的终止数组元素下标end[i]——方便最后可以最大子段的每个元素;
使用max记录dp[i]的最大值,maxi_i记录下标;

//dp[i]=max{dp[i-1]+a[i],a[i]}
#include<iostream>
#include<vector>
using nam
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茅蒐Rubia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值