|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。 复制代码 代码以下:
<?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;
?>
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^ |
|