最大子序列和问题
来源:互联网 发布:js 计算商品选中数量 编辑:程序博客网 时间:2024/06/05 18:01
最大子序列和问题,穷举算法O(n^2),分治算法O(n*logn),动态规划O(n)..
穷举算法:把每两个下标组合成的子序列都计算和,留下最大的
分治算法:把序列分成两半,假设要求的序列是B,那么B要么在序列的左边,要么在右边,或者既包含左边又包含右边。前两种情况可以转化为第三种情况。那么,从中点开始从左边往左找最大的序列,从中点开始向右找最大的序列。时间复杂度为O(n)。总时间复杂度为O(n*logn)。附上算法导论的伪代码。
动态规划算法:假设已知A[0~j]的最大子序列为max所指的那段,temp_sum=sum(A[i..j]),max_sum=sum(A[i..k])。如果temp_sum+A[j+1]>max_sum,显然应该更新max_sum的值。如果temp_sum+A[j+1]<0,说明,sum(A[k..j+1])为负数。且从j+1~k的任意连续子序列和都为负数(假设存在q在k~j之间,且sum(A[q..j+1])>0,那么temp_sum+sum(A[q..j+1])是增加的,不可能因为第j+1个元素出现而变成负数,可以把q~j+1之间的数想象成一个负数处理)。所以,当temp_sum+A[j+1]为负数时,应该舍弃j+1以前的序列,重新开始找最大子序列,因为负数不可能成为最大子序列的第一个数。如果0<temp_sum+A[j+1]<max_sum,正数可能成为最大子序列的第一个数,故继续处理下一个数。
0 0
- 最大和子序列问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题~~
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- HTML5表单及其验证
- <Android> Activity 和 Fragment 信息传递? Activity 和 Fragment 的 Life cycle?
- Nginx服务启动失败问题解决方法
- [LeetCode-404]Sum of Left Leaves(java)
- 为什么在css中设置了font-family:" 微软雅黑"没有用
- 最大子序列和问题
- 百度地图集成中的各种问题!
- Android高效加载大图、多图解决方案,有效避免程序OOM
- NSString学习笔记
- 如何拷贝指定类型的文件以及如何更改拷贝的文件的扩展名
- android自定义view(实现时钟显示)
- composer一般用法
- 菜单Menu、选项菜单OptionsMenu、上下文菜单ContextMenu、子菜单SubMenu - duanxz
- 关于状态栏颜色与官方新Layout对状态栏颜色的自适应更改