马富天PHP博客

一种改进的猴子选大王算法

学习笔记 wujunwei928 2016-05-09 11:17:24 15 0

【摘要】从网上看到了一非常好的猴子选大王算法,所以就把它记录下来了。

猴子选大王是一个非常经典的PHP算法,可以用递归方式解决,但是,网上这个代码并非是递归方式,可高效了,请看:

  1. //	猴子选大王:
  2. //	算法描述:n只猴子围成一个圈,按顺时针或者逆时针给猴子编号从1号到n号
  3. //	设置一个数值m,猴子从1号开始按到n号开始报数,当猴子报数为m的时候,这个猴子被淘汰
  4. //	然后下一只猴子继续报数(从1开始报数),如此淘汰报数为m的猴子,直到剩下最后一字猴子
  5. //	那只猴子就是大王(返回该猴子的号数)。
  6. //	猴子选大王改进算法
  7. //	$n猴子总数,$m淘汰数
  8. function monkeySelectKing($n,$m) { 
  9. 		$r=0;
  10.   	//	$i=2指猴子的初始数量$n至少是两只
  11. 		for($i=2;$i<=$n;$i++){
  12. 			$r=($r+$m)%$i; 
  13.   	}
  14.   	return $r+1; 
  15. } 		
  16. print_r(monkeySelectKing(3,3));

递归算法稍后补充。

版权归 马富天PHP博客 所有

本文标题:《一种改进的猴子选大王算法》

本文链接地址:http://www.mafutian.net/110.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 jQuery快速实现可折叠上下滑动效果的菜单栏 》 下一篇《 什么是RSS? 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码