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 相关文章推荐
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
destoon数据库表说明汇总
Jul 15 PHP
php隐藏IP地址后两位显示为星号的方法
Nov 21 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
Yii2框架加载css和js文件的方法分析
May 25 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php之readdir函数用法实例
2014/11/13 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
python之yield表达式学习
2014/09/02 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
2014三八妇女节活动总结
2014/03/01 职场文书
党员演讲稿
2014/09/04 职场文书
个人租房协议书样本
2014/10/01 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
通知的格式范文
2015/04/27 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL