博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】从网上看到了一非常好的猴子选大王算法,所以就把它记录下来了。
猴子选大王是一个非常经典的PHP算法,可以用递归方式解决,但是,网上这个代码并非是递归方式,可高效了,请看:
// 猴子选大王:
// 算法描述:n只猴子围成一个圈,按顺时针或者逆时针给猴子编号从1号到n号
// 设置一个数值m,猴子从1号开始按到n号开始报数,当猴子报数为m的时候,这个猴子被淘汰
// 然后下一只猴子继续报数(从1开始报数),如此淘汰报数为m的猴子,直到剩下最后一字猴子
// 那只猴子就是大王(返回该猴子的号数)。
// 猴子选大王改进算法
// $n猴子总数,$m淘汰数
function monkeySelectKing($n,$m) {
$r=0;
// $i=2指猴子的初始数量$n至少是两只
for($i=2;$i<=$n;$i++){
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(monkeySelectKing(3,3));
递归算法稍后补充。
版权归 马富天PHP博客 所有
本文标题:《一种改进的猴子选大王算法》
本文链接地址:http://www.mafutian.net/110.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |