最大子数组问题-递归法 @ Python
来源:互联网 发布:h5商城系统源码下载 编辑:程序博客网 时间:2024/05/22 06:21
# -*- coding: utf-8 -*-'''@target: 求解一个最大子数组@author: dawang@date: 2017.9.9'''def maxSubArray(l): length = len(l) if 1 == length: # 递归终止条件 return l mid = length // 2 l_max = maxSubArray(l[:mid]) r_max = maxSubArray(l[mid:]) l_c_max = float("-inf") # 由于数据存在负数, 不能使用0 r_c_max = float("-inf") temp = 0 # 记录横跨数组的最大值 l_index = 0 # for index, item in enumerate(l[mid - 1::-1]): # temp += item # if temp > l_c_max: # l_c_max = temp # l_index = index i = mid - 1 while i >= 0: temp += l[i] if temp > l_c_max: l_c_max = temp l_index = i i -= 1 r_index = 0 temp = 0 for index, item in enumerate(l[mid:]): temp += item if temp > r_c_max: r_c_max = temp r_index = index + mid c_max = l[l_index:mid]+ l[mid:r_index + 1] if sum(l_max) > sum(r_max) and sum(l_max) >sum(c_max): return l_max if sum(r_max) > sum(l_max) and sum(r_max) >sum(c_max): return r_max if sum(c_max) > sum(r_max) and sum(c_max) >sum(l_max): return c_maxA = [13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7]print maxSubArray(A)
阅读全文
0 0
- 最大子数组问题-递归法 @ Python
- 最大子数组问题分治法(递归)Java实现
- Python实现求解最大子数组问题
- python递归分治求最大子数组失败
- 【算法导论】最大子数组问题(递归+迭代)
- 最大子数组问题的三种方法:分治法、暴力法和非递归方法
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- 最大子数组问题
- PAT 1096. Consecutive Factors (20)
- 研究生学位论文写作与答辩存在的几个问题
- 如何修改Tomcat端口号
- 牛客 题库 7
- maven教程
- 最大子数组问题-递归法 @ Python
- 如何做好全屏化的交互体验(解决EditText导致的界面上移、挡住等问题)
- POI导出Excel
- FreeCodeCamp问题汇总
- sas统计分析学习笔记(九)——方差分析
- Centos6.8 软Raid实践
- [BZOJ]1924: [Sdoi2010]所驼门王的宝藏 强连通+DP
- 高精度乘法
- 671