分治法求最大连续和
来源:互联网 发布:ubuntu 17.10 安装后 编辑:程序博客网 时间:2024/05/01 23:27
给出一个长度为n的序列,求连续最大和。
递归求解是分别求出位于左半部分和右半部份的最优解。
合并是找起点在左边的,终点在右边的最优解,并和左右部分最优的进行比较。
代码如下。
时间复杂度o(NlogN)
int maxsum(int *A, int x, int y){ int middle, value, L, R, mmax; if(y-x == 1) return A[x]; ///只有一个元素,直接返回 middle = x + (y-x)/2; ///第一步:划分区间为[x,m) [m,y) mmax = max(maxsum(A, x, middle), maxsum(A, middle, y)); ///第二步:递归求解 value = 0; ///第三步:从分界点开始向左的最大连续和L L = A[middle-1]; for(int i = middle-1; i >= x; i--){ value += A[i]; L = max(L, value); } value = 0; ///第三步:从分界点开始向右的最大连续和R R = A[middle]; for(int i = middle; i < y; i++){ value += A[i]; R = max(R, value); } return max(mmax, (L+R)); ///二者比较取最大}
阅读全文
0 0
- 分治法求最大连续和
- 分治法求最大连续和
- 分治 求最大连续和。
- 分治法求数组最大连续子序列的和
- 分治法之求最大连续子序列和
- 分治法求最大连续和的问题
- 最大连续和(分治法)
- 最大连续和--分治
- 分治法--最大连续序列和
- 最大连续和(分治法)
- 分治法解决最大连续和
- [算法入门经典] 8.1.3 分治法 求最大连续和
- uva 1400 Ray, Pass me the dishes!(线段树, 分治法求最大连续和)
- 《github一天一道算法题》:分治法求数组最大连续子序列和
- 分治连续和最大字串
- 最大连续和(分治)
- 求最大连续和
- 分治法求最大子段和
- 在线云评测系统日志(六):后台评测系统的架构
- ElasticSearch 5.4.1 安装问题及解决办法
- imgproc模块--轮廓矩
- 看完让你彻底搞懂Websocket原理
- Android7.0 PowerManagerService亮灭屏分析(一)
- 分治法求最大连续和
- 零基础搭建Shadowsocks(1) 基础理论
- 深入理解String和intern方法
- CEC 和 ARC
- Eclipse的“order and export”是干什么用的?
- 02. 抓包及保存 ❀ 数据包分析工具 Wireshark
- 在win7系统怎么查看MAC地址
- redis windows 64位下载
- Git