0
点赞
收藏
分享

微信扫一扫

猴子大王问题

Aliven888 2022-03-12 阅读 56
算法

1、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

<?php 
function king($n,$m){
$monkeys = range(1,$n);//创建猴子
$i=0;
//未找出大王前都跑
while(count($monkeys)>1){
if(($i+1)%$m ==0){
unset($monkeys[$i]);
}else{
array_push($monkeys,$monkeys[$i]);//把未抽出来的猴子重新入圈,继续抽
 unset($monkeys[$i]);
}
  $i++;//$i 循环+1,不断把猴子删除,或 push到数组 
}
return current($monkeys);  //猴子数量等于1时输出猴子标号,得出猴王
}


//测试
echo king(10,7);









?>
举报

相关推荐

0 条评论