最大连续和 题解

【题目描述】

给出一个长度为 n 的序列 A1,A2,...,An,求最大连续和。换句话说,要求找到 1<=i<=j<=n,使得 Ai+Ai+1+...+Aj尽量大。

【输入】

第一行输入 n(1<=n<=50000)。接下来 1 行输入序列的 n 个元素,第 i+1 行为 Ai(|Ai|<=10000)。

【输出】

输出一个数表示最大连续和。

【样例输入】

4

2 -1 3 -2

【样例输出】

4

【数据范围】

30%的数据 n<=100;

60%的数据 n<=10000;

100%的数据 n<=50000。

==================题解===================

动态规划。

对于第i个数据,dp数组存储dp[i-1]+a[i]与a[i]中较大的一个,即若当前数列加上这个数据后小于当前数据,则另开一个数列。此时更新ans为原来的ans与dp[i]中的较大值。可以边读入边处理,最后输出ans。


转载于:https://www.cnblogs.com/linjia64/p/9607158.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值