算法设计与分析——动态规划方法求解序列的连续最大子段和

当 当 当 当 ~~
没错,又是算法课作业 (╯︵╰)

问题描述:
输入:整数序列 a1, a2 … an
输出:序列的一个连续子段,使该子段和最大,输出最大子段和
当所有整数都为负数时,定义最大子段和为0
语言:c++

若要输出连续子段,见链接(眼神不好,交作业才读懂题):
http://blog.csdn.net/sunshine__0411/article/details/78484960

关于动态规划:
首先确定的是使用动态规划的思想编写算法,动态规划是一个多阶段决策问题。假设事件在初始状态后需要经过n个这样的阶段。从i阶段发展到i+1阶段可能有多种不同的途径,而事件必须从中选择一条途径往前进展。在两个阶段间的选择发展途径的行为称为一次“决策”。事件的发展过程之中需要做n次决策,这些决策就构成了事件整个发展过程的一个决策序列——这一过程称为多阶段决策过程。
划重点:对任意的i,阶段i以后的行为仅依赖于i阶段的状态,而与i阶段之前,过程如何达到这种状态的方式无关。

思路分析:
int n; int a[n] //存储待计算序列an
想办法把an这个序列串起来,每个状态仅依赖于之前的状态。
定义一个int max //保存最大值
定义一个答案数组ans[n](其实后来发现可以不用这个数组,都是后话。后话。。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值