最大连续子序列之和(动态规划)
来源:互联网 发布:网页数据采集八爪鱼 编辑:程序博客网 时间:2024/05/07 02:35
1. 问题描述
设n个元素的序列存储在数组A[0..n-1]中,求数组中连续子序列之和的最大值。
2. 递推公式
设All[i]为子问题A[i..n-1]的连续子序列之和的最大值,start[i]为从A[i]开始的连续序列之和的最大值,因此:
All[i] = A[n-1] i = n - 1时,
All[i] = max{All[i + 1], start[i]}i = 0, 1, ..., n - 2
其中start[i]为:
start[i] = A[n - 1]i = n - 1时,
start[i] = max{A[i], A[i] + start[i + 1]}i = 0, 1, ..., n - 2
代码如下:
int maxSum(int A[], int n){ int All[n], start[n], i; start[n - 1] = All[n - 1] = A[n - 1]; for (i = n - 2;i >= 0;i--) { start[i] = max(A[i], A[i] + start[i + 1]); All[i] = max(All[i + 1], start[i]); } return All[0];}int max(int a, int b){ return a > b ? a:b;}
下面是对空间复杂度的改进:
int maxSum(int A[], int n){ int start, All, i; start = All = A[n - 1]; for (i = n - 2;i >= 0;i--) { start = max(A[i], A[i] + start); All = max(All, start); } return All;}
时间复杂度为O(n)。
- 最大连续子序列之和(动态规划)
- 最大连续子序列之和 动态规划 java
- 动态规划专题之最大连续子序列之和
- 动态规划专题讲义之最大连续子序列之和
- 杭电oj1231(动态规划最大连续子序列之和)
- HDU1003 动态规划,最大子序列之和
- 动态规划之最大连续子序列
- [acm]动态规划-最大连续子序列
- 动态规划---hdu1231---最大连续子序列
- HDU1231 最大连续子序列(动态规划)
- 动态规划:最大连续子序列乘积
- [动态规划]最大连续子序列和
- HDU1231最大连续子序列(动态规划)
- 最大连续子序列和-动态规划
- 最大连续子序列和----动态规划
- 最大连续子序列----DP动态规划
- HDU_1231 最大连续子序列 【动态规划】
- 动态规划? 最大连续子序列和
- Why ASMLIB and why not?
- flex4 spark buttion 自定义ICON位置
- iOS 开发实战培训
- Android 关于SoapObject.getProperty的作用
- ubuntu下修改网卡名称
- 最大连续子序列之和(动态规划)
- CSDN说你懂得,其实我并不懂,求大仙解释!!!
- lvs + tomcat(nat)
- jQuery学习(二)选择符
- 正则表达式的修饰符
- CMFCColorDialog弹不出来或者CMFCColorButton的Other按钮无效
- Silverlight Chart(二) ----动态直线
- 约束与数据库对象规则、默认值的探究 转载
- 排队接水