php 约瑟夫环

<?php
/**
* Created by PhpStorm.
* User: chenshuai
* Date: 2018/3/17
* Time: 下午3:27
*/
/**
* @param $n 猴子数量
* @param $m 第几个猴子
* @return array
*/
function ysf($n,$m)
{
$i=0;
$arr = range(1,$n);//创建:含有100个值的数组
while(count($arr)>=$m) {
++$i;
//不断出队(即删除数组的第一个元素)
$survice = array_shift($arr);
if($i%$m<>0){
//结合约瑟夫环问题
//报到3就自杀(从队列中踢出),否则等待下一次的审判(再次添加到队尾)
array_push($arr, $survice);
} #elseif($i>count($survice)){$i=0;}#这句代码加不加都无所谓,便于理解
}
return $arr;
}
$list = ysf(20,3);
print_r($list);
tags: PHP