最大子序列和
来源:互联网 发布:mac flash player 21 编辑:程序博客网 时间:2024/05/29 14:03
最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。
找最大子序列的方法很简单,只要前i项的和还没有小于0那么子序列就一直向后扩展,否则丢弃之前的子序列开始新的子序列,同时我们要记下各个子序列的和,最后找到和最大的子序列。
package stringTest;/** * 最大的子序列,就是指某一段的子序列的和最大,解决方案就是从左向右,判断子序列是否小于0,如果小于0 就从新开始找子序列,否则就开始考虑下一位 * * @author duola * */public class maxSubSequence { private static int maxsub(int[] a) { if (a.length <= 0 || a == null) return -1; int maxsum = 0, sum1 = 0; for (int i = 0; i < a.length; i++) { sum1 += a[i]; if (sum1 > maxsum) { maxsum = sum1; } if (sum1 < 0) { sum1 = 0; } } return maxsum; } public static void main(String[] args) { int[] a = { -2, 11, -4, 13, -5, -2 }; int[] b = { -6, 2, 4, -7, 5, 3, 2, -1, 6, -9, 10, -2 }; System.out.println(maxsub(a)); //20 System.out.print(maxsub(b)); //16 }}
如果要求找到子序列开始和结束的元素,只需要找到最后一个大于等于0 的元素,然后用最大和从后向前减去即可。
1 0
- 最大子序列和
- 最大子序列和
- 最大和子序列
- 最大子序列和
- 最大子序列和
- 最大子序列和
- 最大子序列和
- 最大子序列和?
- 最大子序列和
- 最大子序列和
- 和最大子序列
- 最大子序列和
- 最大子序列和
- 最大子序列和
- 最大子序列和
- 最大子序列和
- 最大和子序列
- 最大子序列和
- AttributedString
- 秒杀核心设计(减库存部分)-防超卖与高并发
- 转-android沉浸式状态栏:Translucent System Bar 的最佳实践
- WPF获取键盘状态(如WPF组合键)
- activity管理
- 最大子序列和
- Java反射和工厂模式
- 文章的相关性对网站优化到底有多重要?
- 每天一命令(15)df - report file system disk space usage
- 获取RSA文件的MD5和SHA1
- 文件的MIME-TYPE
- 手动内存管理转ARC项目实战
- grails Deadlock found when trying to get lock; try restarting transaction
- Android引导页面