动态规划--求最大连续子数组的和(Python实现)&求解最大连续乘积字串(Python实现)
2015-04-07 17:29
946 查看
def MaxSum(self,array,n): sum=array[0] result=array[0] for i in range(0,n): if sum<0: sum=a[i] else: sum=sum+a[i] start1=i if sum>result: result=sum end=i start=start1 print result,start,end
上述采用的是动态规划思想:假设sum[i]表示以第i个元素结尾的最大连续字串,那么sum[i]=max{sum[i-1]+a[i],a[i]},判断括号中的元素哪个大,就变成了判断sum[i-1]是否大于0
最大连续乘积动态规划:Max表示以a结尾的最大连续字串乘积,Min表示最小的,那么Max=Max{a[i],Max[i-1]*a[i],Min[i-1]*a[i]}Min=Min,因为最大最小可能只是符号造成的。
def MaxMulti(self,array,n): maxA=[] minA=[] maxA[0]=minA[0]=array[0] value=maxA[0] for i in range(0,n): maxA[i]=max(a[i],maxA[i-1]*a[i],minA[i-1]*a[i]) minA[i]=min(a[i],maxA[i-1]*a[i],minA[i-1]*a[i]) value=max(value,maxA[i]) print value
相关文章推荐
- 动态规划方法求最大子连续数组乘积
- 动态规划典型例题--连续子数组的最大和
- 动态规划问题系列---连续子数组(二维)的最大和
- 求解连续子数组乘积的最大值
- 动态规划题目(三)——最大连续乘积子串
- 动态规划:最大连续子序列乘积
- 笔试面试算法经典--连续子数组的最大乘积及连续子数组的最大和(Java)
- 动态规划:求子数组的最大连续和
- 动态规划之最大连续子数组(递归备忘录写法)
- 最大连续子序列和,乘积,最长递增子串,最长公共子串,子序列等问题(动态规划等)
- 求最大连续子序列的和,两种解法:动态规划 & Kadane算法
- 连续子数组最大和 python版实现
- 动态规划-最大连续乘积子数组
- 动态规划:最大连续子序列乘积
- Python实现求解最大子数组问题
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 【面试常见题目之动态规划】连续子序列的最大和(子数组的最大和)
- 动态规划:最大连续子序列乘积 分类: c/c++ 算法 2014-09-30 17:03 656人阅读 评论(0) 收藏
- 动态规划求数组中和最大字串的值 以及 字符串的循环移位(要求空间复杂度O(1),时间复杂度O(n))