连续子数组的最大和
2016-03-02 08:41
225 查看
题目:常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)
思路:这种题目一般先自己模拟一下各种情况,找出规律,然后code。
思路如下:
1. 如果累加上当前数比当前数本身还小的话,说明之前的和是负的,而且比当前数字小,可以不考虑,之前的累计抛弃,从当前数字再开始
2. 需要一个保存最大和的变量,每次累加都和当前和比较,始终保存目前的最大和
代码如下:
还可以用动态规划法
未完待续。。。。。
思路:这种题目一般先自己模拟一下各种情况,找出规律,然后code。
思路如下:
1. 如果累加上当前数比当前数本身还小的话,说明之前的和是负的,而且比当前数字小,可以不考虑,之前的累计抛弃,从当前数字再开始
2. 需要一个保存最大和的变量,每次累加都和当前和比较,始终保存目前的最大和
代码如下:
bool g_InvalidInput = false; // 输入错误全局标志位 int FindGreatestSumOfSubArray(vector<int> array) { int size = array.size(); if (size == 0){ g_InvalidInput = true; return 0; } g_InvalidInput = false;//记得处理全局标志 int sum = array[0]; int lastsum = -100000; for (int i = 1; i<size; i++){ if (array[i] <= 0) sum = array[i]; else sum += array[i]; if (sum>lastsum) lastsum = sum; } return lastsum;
还可以用动态规划法
未完待续。。。。。
相关文章推荐
- 递归2016.3.8
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
- jdbcTemplate 获取数据表结构
- 重识JavaScript 之 数据类型的相互转换
- 养生篇——《人体使用手册》的“一招三式”
- 【杭电】[2041]超级楼梯
- 分解质因数
- weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool JDBC D
- 关于数组和List之间相互转换的方法
- js+css实现回到顶部按钮(back to top)
- 斐波那契数列之递归、循环
- 存储过程2
- js格式化数字 金额按千位逗号分隔
- 重画了一下网络设备接口图
- 关于引用PagerSlidingTabStrip无法引用的问题
- 利用@media screen实现网页布局的自适应
- jvm高级特性整理
- JS控制浏览器全屏
- Android学习笔记之(一)开发环境搭建
- extjs 中的afterRender, onDestroy等函数什么时候调用啊