poj 2593 & poj 2479解题报告

说明:poj 2593与poj 2479基本一样,所以下文以2593为例展开

 

题目


Max Sequence
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 9370 Accepted: 3825

Description

Give you N integers a1, a2 ... aN (|ai| <=1000, 1 <= i <= N). 

You should output S. 

Input

The input will consist of several test cases. For each test case, one integer N (2 <= N <= 100000) is given in the first line. Second line contains N integers. The input is terminated by a single line with N = 0.

Output

For each test of the input, print a line containing S.

Sample Input

5
-5 9 -5 11 20
0

Sample Output

40

Source


解题思路

此题的解题方法属于动态规划的思想。求某个数组序列中两个不重叠的子列,并且这两个子列的和是所有满足条件的子列和中最大的一个。
为了满足不重叠,于是分别从左到右和从右到左扫描数组序列,分别用两个数组left[i]/right[j]数组存储“array[0~i]数组序列中的和最大子序列的和的值”和“array[j~n-1]数组序列中的和最大子序列的值”。于是,两个满足条件的子序列的和,可以通过求最大的 "left[i-1]+right[i]"得到。
另外求“array[0~i]数组序列中的和最大子序列的和的值”的方法,也就是求“某个数组序列和最大子序列”的问题,充分利用动态规划的思想,即可求的。

程序代码

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Emilin Amy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值