最大子段和解法及python实现
2017-12-26 08:46
429 查看
问题描述:
最大子段和(Maximum Interval Sum):给定长度为n的整数序列,a[1…n], 求[1,n]某个子区间[i , j],使得a[i]+…+a[j]和最大.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].
求解方法:
1.穷举法1.1 对起点,终点全部遍历求和依次比较,最傻 的穷举O(n3)
代码:
最大子段和(穷举法) def maxrange(a): n=len(a) start=0 end=0 Max=0.0 for i in range(n): for j in range(i,n): Sum=0 for k in range(i,j+1): Sum=Sum+a[k] if(Sum>Max): Max=Sum start=i+1 end=j+1 print(start,end,Max)
1.2 稍微改进点,同一个起点,比较不同终点,取一个最大;再换下一个起点,两层循环。O(n2)
#最大子段和(穷举法) def maxrange(a): n=len(a) Sum=0.0 start=0 end=0 Max=0.0 for i in range(n): Sum=0.0 for j in range(i,n): Sum=Sum+a[j] if(Sum>Max): Max=Sum start=i+1 end=j+1 print(start,end,Max)
相关文章推荐
- Python笔试题目:求最大的K个数子,解法一,最快速实现的方法
- 动态规划 python 实现 三角形最大值路径
- python3实现一维数组求最大值返回参数需要注意的地方
- 分词算法的python实现(正向最大匹配法)
- 动态规划--求最大连续子数组的和(Python实现)&求解最大连续乘积字串(Python实现)
- 使用Python求解最大公约数的实现方法
- Python笔试题目:求最大的K个数子,解法二,适合小型数据集的情况
- Python实现最大优先队列
- 实现杨辉三角的10种解法--体验Python之美
- 求连续子数组最大和问题的两种解法_PHP实现
- 最大子段和最大子段积java实现
- python 实现矩阵中每行最大的前x个值所在的位置
- 最大子段和算法 不同复杂度方法实现
- 模拟退火算法求函数最大、小值——python实现
- Python 阶乘的实现和递归的最大深度
- 最大子段和详解(N种解法汇总)
- 最大子段和动态规划实现
- python 实现求和、计数、最大最小值、平均值、中位数、标准偏差、百分比。
- ArcGIS Python实现Modis NDVI批量求年最大值
- 阿里云笔试题:最大子段和问题的动态规划解法