PHP求最大子序列和的算法实现


Posted in PHP onJune 24, 2011
<?php 
//作者:遥远的期待 
//QQ:15624575 
//算法分析:1、必须是整数序列、2、如果整个序列不全是负数,最大子序列的第一项必须是正数,否则最大子序列后面的数加起来再加上第一项的负数,其和肯定不是最大的;3、如果整个序列都是负数,那么最大子序列的和是0; 
//全负数序列很简单,不举例 
$arr=array(4,-3,5,-2,-1,2,6,-2); 
function getmaxsum($arr){ 
$thissum=0; 
$maxsum=0; 
$start=0;//记录子序列的起始下标 
$end=0;//记录子序列的结束下标 
for($i=0;$i<count($arr);$i++){ 
$thissum+=$arr[$i];//取得当前子序列的和 
if($thissum>$maxsum){//如果当前子序列的和大于当前最大子序列的和 
$maxsum=$thissum;//改变当前最大子序列的和 
$end=$i; 
}else if($thissum<0){//如果当前子序列的和小于0,则把下一个元素值假定为最大子序列的第一项,这里可以保证最大自序列的第一项一定是正数 
$thissum=0;//前提这个序列不全是负数 
$start=$i+1; 
} 
} 
$parr=array($start,$end,$maxsum); 
return $parr; 
} 
list($start,$end,$maxsum)=getmaxsum($arr); 
echo '最大子序列是:'; 
for($i=$start;$i<=$end;$i++){ 
echo $arr[$i].' '; 
} 
echo '<br>'; 
echo '最大子序列的和是'.$maxsum; 
?>
PHP 相关文章推荐
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 PHP
php中转义mysql语句的实现代码
Jun 24 #PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 #PHP
php中对2个数组相加的函数
Jun 24 #PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 #PHP
PHP array操作10个小技巧分享
Jun 23 #PHP
php 缩略图实现函数代码
Jun 23 #PHP
php中随机显示图片的函数代码
Jun 23 #PHP
You might like
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
微信支付开发交易通知实例
2016/07/12 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
聘用意向书
2014/07/29 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
西游记读书笔记
2015/06/25 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
导游词之河北野三坡
2019/12/11 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
SQL 聚合、分组和排序
2021/11/11 MySQL
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript