求最大子序列和
来源:互联网 发布:锐速 原理 知乎 编辑:程序博客网 时间:2024/05/17 15:18
[问题描述]给定一整数序列A1, A2, A3, … , An(可能会有负数),求A1 ~ An的一个子序列Ai ~ Aj,使得Ai 到Aj的和最大。
[Input] 1, 2, -23, 6,3,1,-5,7,-11.
[Ouput] 12
因为:6+3+1+(-5)+7 = 12。
这道题有很多解法。最简单的就是暴力穷举。用3个for循环来遍历所有的子序列的求得和,平均复杂度为O(n^3)。我这里用了一个很好的算法来解决,平均复杂度只有O(n),利用了动态规划实现。代码如下:
package MaxSubSum;public class MaxSubSum { //求最子序列和,平均复杂度为O(n) public static int getMaxSubSum(int a[]){ int max = 0, sum = 0; for(int i=0; i < a.length; i++){ sum += a[i]; if(max < sum) max = sum; else if(sum < 0) //关键点,因为sum某一个字符字串的最大和,当sum如果小于0,则要重新i计算sum了。 sum = 0; } return max; } public static void main(String args[]){ int a[] = {1, 2, -23, 6,3,1,-5,7,-11}; System.out.println( getMaxSubSum(a)); }}
参考书籍《数据结构–java语言描述》刘小晶版。
1 0
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大和子序列
- 求最大和子序列
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大和子序列
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 子序列求最大和
- 求连续子序列最大和
- 联机算法求最大子序列和
- 堆排序(Heapsort)
- 2016多校8 HDU 5828 Rikka with Sequence 线段树优化
- 二分图染色
- multiple definition of 错误原因
- 51Nod-1416-两点
- 求最大子序列和
- 【hdu】1011 Starship Troopers【树形背包】
- linux下安装python mysql驱动
- 个人对c++语言的理解,猜测一下语言创造者的思想
- CodeForces 27E 素数筛,暴力
- Count Complete Tree Nodes
- Dinic Algorithm to solve max flow problem
- 添加iis的wolf、wolf2、svg字体和json支持
- [leetcode] 367. Valid Perfect Square