//10只猴子
//思路 没有叫到的删除掉原来的位置,加到后面
//原理:循环链表
$monkeys = [1,2,3,4,5,6,7,8,9,10];
$king = chooseMonkeyKing($monkeys,3);
//求交集取出来原始位置
$king_pos = array_intersect($monkeys, $king);
echo '<pre>';
print_r($king_pos);
function chooseMonkeyKing($arr,$callNum)
{
if(count($arr) == 0 || $callNum <= 0)
{
exit("玩勺子把去吧!");
}
//定义一个循环的全局变量
$i = 1 ;
while(count($arr) > 1)
{
//如果取余为0 ,说明该猴子应该被T除。
if( $i % $callNum == 0)
{
unset($arr[$i-1]);
}
else
{
//把当前的猴子加入到数组队尾,同时删除该位置的猴子
array_push($arr,$arr[$i-1]);
unset($arr[$i-1]);
}
$i++;
}
return $arr;
}
?>
超简单一分钟教你猴子选大王算法(PHP详解)
最新推荐文章于 2024-09-06 16:45:30 发布