对“最大子序列和问题”的一点思考
穷举法是最容易想出的解法,反正就是把所有能举出的子序列都算一遍和,找出最大的一个就是,复杂度O(N*N)。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
对于分治法来说,“分“是比较简单的,对半分成求解左右两个序列的最大子序列,不过终止条件应该是什么呢?我的想法是到只剩一个元素的序列的话,直接返回这个元素就是了,可书上都是如果大于0,返回此元素,若小于0,则返回0,这里想不明白。最难的部分应该是“治”,要考虑跨左右两个子序列的情况。
{
if(left==right)
{
return a[left];
}
int mid = (left+right)/2;
int i,lSum=0,rSum=0,tmpLMax=0,tmpRMax=0;
for(i=mid;i>=left;--i)
{
lSum+=a[i];
if(lSum>tmpLMax)
{
tmpLMax = lSum;
}
}
for(i=mid+1;i<=right;++i)
{
rSum+=a[i];
if(rSum>tmpRMax)
{
tmpRMax = rSum;
}
}
int overMax = tmpLMax+tmpRMax;
int lMax = MaxSubSeqSum(a,left,mid);
int rMax = MaxSubSeqSum(a,mid+1,right);
return max(max(overMax,lMax),rMax);
}
动态规划的方法就太巧妙了,巧就巧在它扫描时会跟踪序列上升还是下降的趋势,从而把前面不适合的部分都给抛弃了,就一路走一路抛,并且同时把合适的记忆住了。
{
int tmpSum=0,maxSum = 0;
for(int i=0;i<len;++i)
{
tmpSum+=a[i];
if(tmpSum>maxSum)
{
maxSum = tmpSum;
}
else if(tmpSum<0)
{
tmpSum=0;
}
}
return maxSum;
}
对“最大子序列和问题”的一点思考相关推荐
- mysql 手动写时间_关于数据库中如何存储时间的一点思考
1.切记不要用字符串存储日期 我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手. 但是,这是不正确的做法,主 ...
- 对于表列数据类型选择的一点思考
对于表列数据类型选择的一点思考 简介 SQL Server每个表中各列的数据类型的选择通常显得很简单,但是对于具体数据类型的选择的不同对性能的影响还是略有差别.本篇文章对SQL Server表列数据类 ...
- 关于STM32驱动DS1302实时时钟的一点思考
关于STM32驱动DS1302实时时钟的一点思考 之前用51驱动过DS1302,没用多久就输出了正确的时间.当时以为这块芯片其实没啥,很简单.但是现在用STM32做项目,用到同样的芯片,以为这有何难, ...
- 对高并发流量控制的一点思考
前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考. 应对大流量的一些思路 首先,我们来说一下什 ...
- 关于c语言结构体偏移的一点思考
注:此处只是利用了编译器的特性来计算结构体偏移 这句话就一笔带过,说得有点牵强附会.以后有时间自己再详细了解一下编译器的特性... more exceptional c++ 中文版 26页 https ...
- App用户体验的一点思考
App用户体验的一点思考 最近我在团队中负责TImers4Me这款Android软件的开发.维护和更新,软件每次在市场上的发布都能得到用户一些有价值的反馈,通过收集整理用户们的使用反馈,我们常能看到一 ...
- 对高并发流量控制的一点思考 推荐
前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考. 应对大流量的一些思路 首先,我们来说一下什 ...
- 贝特朗奇论 用计算机,关于贝特朗奇论的一点思考
关于贝特朗奇论的一点思考 贝特朗奇论这个名字就很奇怪,我最开始以为是贝特朗奇的某个论点或者命题,但是百度了一下发现原来是贝特朗(Bertrand)的"奇论",最初用以批判当时尚不严 ...
- 对产品质量的一点思考
不管是做产品还是做项目,也不管是采用瀑布模型还是敏捷开发,我们都有一个终极目标,就是能按时交付质量可靠的功能,其中质量尤为重要. 本文是我对产品质量的一点思考,如果您所在的团队代码质量很高,很少出BU ...
- python多线程队列处理_Python线程和队列使用的一点思考
Python线程和队列使用的一点思考 1. 斗哥采访环节请问为什么要使用线程? 答:为了提高程序速度,代码效率呀. 请问为什么要使用队列? 答:个人认为队列可以保证线程安全,实现线程间的同步,比较稳. ...
最新文章
- php调用C代码的方法详解
- jquerymobile在手机上很小_手机充电时按这个键,充电快很多!
- 分享Kali Linux 2017年第23周镜像文件
- linux中ping命令的用法
- Python-基于flask的接口框架
- DataScience:风控场景之金融评分卡模型的构建(逻辑回归)开发(转评分卡)、使用过程(线上实现)之详细攻略
- C学习if条件判断和for循环
- 如何轻松愉快的理解条件随机场(CRF)
- redis主从复制和哨兵机制
- 可以种树吗_基本农田能干什么?种树?建房?搞种养殖?哪种可以?
- 「Font」- 设置 Fallback 字体(如果字体 A 中不存在某个字符,则从字体 B 中加载该字符) @20210212
- 使用PYQT5打开海康威视工业相机并获取图像进行显示
- Android基础教程(奋斗之小鸟)_PDF 电子书
- excel宏实现工作表索引,点击按钮隐藏/显示对应工作表
- 素数筛——区间段内最小,最大素数,以及这个区间中素数的个数
- MircoPython 的组件扩展方法
- 一度智信:拼多多平台推广有哪些
- Jupyter notebook中自定义支持天软TSl语言的魔术命令
- 网易互娱的一道笔试题
- 免费的图片编辑app有哪些?跟你分享这三个软件
热门文章
- LOJ#6360. 复燃「恋之埋火」(最小圆覆盖+高斯消元)
- tcp 状态转移图详解
- nginx配置中文域名解析
- MySQL:unknown variable #39;master-host=masterIP#39; [ERROR] Aborting
- Qt中图片调用(2)
- oracle热点表online rename
- 从(社区电商)订购 到 出库 业务流程(个人想法)
- xgboost算法_xgboost算法学习心得
- python 构建来源gis_Python语言在ArcGIS环境中的应用.pptx
- JAVA Runtime.addShutdownHook()方法{拿到线程句柄,在程序关闭之前调用释放资源}