最大连续子序列的和与积
来源:互联网 发布:o2o软件开发 编辑:程序博客网 时间:2024/06/05 17:35
这是两个非常相似的问题,最大子序列和思路:当前面加的数据和小于等于0时,就放弃前面的序列,用一个变量记录前面的最大和;依次计算子序列和,每次计算出的结果和之前保存的最大值相比较并更新最大值。
最大子序列积思路:他的条件判断变成前面数据的积为0是,就放弃前面的序列,其他思路和上面一样,重要的是他需要两次的遍历数组,因为很可能数组中负数是奇数个,这时候要找出负数两边的最大值,再比较这两边的那个大。
最大连续子序列的积就比上面多遍历了一遍,放弃前面序列的条件变了下
最大子序列积思路:他的条件判断变成前面数据的积为0是,就放弃前面的序列,其他思路和上面一样,重要的是他需要两次的遍历数组,因为很可能数组中负数是奇数个,这时候要找出负数两边的最大值,再比较这两边的那个大。
bool invalidInput=false;int maxSumSubArray(int *a,int length){ if(a==null || length<=0){ return 0; invalidInput=true; } int max=a[0]; int sum=a[0]; for(int i=1;i<length;i++){ if(sum<=0) sum=a[i]; else sum+=a[i]; if(sum>max) max=sum; } return max;}
最大连续子序列的积就比上面多遍历了一遍,放弃前面序列的条件变了下
bool invalidInput=false;int maxProductSubArray(int *a,int length){ if(a==null || length<=0){ return 0; invalidInput=true; } int max=0; int product=a[0]; for(int i=1;i<length;i++) { if(product==0) product=a[i]; else product*=a[i]; if(product>max) max=product; } product=a[length-1]; for(int j=length-2;i>=0;i--){ if(product==0) product=a[i]; else product*=a[i]; if(product>max) max=product; } return max;}参考了:http://www.cnblogs.com/iamccme/archive/2013/05/21/3091641.html
0 0
- 最大连续子序列的和与积
- 【算法小总结】最大连续子序列和最大连续子矩阵的关系与实现
- 最大连续子序列和最大连续子矩阵的关系与实现
- [数据结构]连续子序列最大和,最大积的问题
- 数组连续子序列的最大和&最大积
- 连续最大子序列和与最小子序列和
- 轰炸问题、连续子序列的积、n个最大连续子序列和
- 最大连续子序列的和
- 最大连续子序列和的问题
- 最大连续子序列的和(normal)
- 求连续子序列的最大和
- 最大连续子序列的和
- 最大连续子序列的和
- 最大连续子序列的和
- 最大和连续子序列的变形
- 连续子序列的最大和
- 最大连续子序列的和
- 最大连续子序列的和
- 杭电acm2025查找最大元素
- DNS解析与DNS攻击的原理以及如何预防
- (一)XMPP学习笔记
- C# winfrom设置textbox字体大小和样式并结合GridView使用
- Ubuntu安装基础教程
- 最大连续子序列的和与积
- 来看看这个拒绝苹果的19岁开发者
- C语言指针——指针的运算
- java_多态(1)
- 2014.09.24面试总结
- EditText光标颜色问题
- MVC5 Entity Framework学习之Entity Framework高级功能
- Bachet's Game+uva+简单dp
- JMS消息机制示意图