JAVA实践分治法最大连续子序列求和

本文介绍了如何使用JAVA通过分治法解决最大连续子序列求和问题。详细阐述了算法思路,包括跨边界求和的处理,并提供了代码实现及运行结果,帮助理解分治法的应用。
摘要由CSDN通过智能技术生成

前言

最大连续子序列求和是指给定一串数字,算出一段连续的数字能求得的最大和。

实现功能

给定一串数字

3, -4, 2, 5, 9, -3, 7, 9

求连续的子序列的最大和

3, -4, [2, 5, 9, -3, 7, 9]

最大连续子序列的和是29

实现参考

概括

 * 拆分序列(直到只剩下一个数的序列) ---->   左序列|右序列
 * 求左序列最大值
 * 求右序列最大值
 * 求跨边界的最大值
 * 求以上三个最大值的最大值
 * 不断重复

中文版参考

 * 给定一个序列,求其中求和所得最大
 *
 * 假设存在一组序列
 * 3 -4 2 5 9 -3 7 9
 * 将这组数一分为2,得到
 * {2 -4 2 5 9}{-3 7 9}
 * 再对左边序列拆分
 * {2 -4}{2 5 9}
 * 再左拆分
 * {2}{-4}
 * 再左拆分
 * {2} 大于0,因此当前序列最大和为【2】(当前序列是指{2}这个只有一个数字的序列)
 * 处理右边
 * {-4} 小于0,返回0,可以看作是当前序列的最大和为【0】
 * 左右已处理完毕,回到上一层
 * 处理跨越边界的情况【跨越边界的详细描述请看下一个副标题】
 * {2}{-4}被拆
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值