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下判断数组中是否存在相同的值array_unique
Mar 25 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
php引用传值实例详解学习
Nov 06 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP微信红包API接口
Dec 05 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
详细解读php的命名空间(二)
Feb 21 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 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
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
javascript中的几个运算符
2007/06/29 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
Python 实现链表实例代码
2017/04/07 Python
python 反向输出字符串的方法
2018/07/16 Python
如何获取Python简单for循环索引
2019/11/21 Python
Python中url标签使用知识点总结
2020/01/16 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
python如何实现word批量转HTML
2020/09/30 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
《钱学森》听课反思
2014/03/01 职场文书
闭幕式主持词
2014/04/02 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
天下第一关导游词
2015/02/06 职场文书
社区元宵节活动总结
2015/02/06 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android