php算法题

$m = 100;
$n = 11;
echo getKing($m,$n);
function getKing($n, $m)
{
 //强制转换为数值型
 $n = intval($n);
 $m = intval($m); //让猴子排好队
 for($i=0; $i < $n; $i++)
 {
  $monkeys[$i] = $i+1;
 }
 $start = 0;//初始化开始位置
 $step = $m - 1;
 for($i=0; $i < $n; $i++)
 {
  //判断猴子的个数,如果只剩一个就直接返回这只猴子
  $num_monkey = count($monkeys);
  if($num_monkey === 1) return $monkeys[0]; //如果这一圈找不到要踢的猴子,就在下一圈找到要踢的猴子
  if($start + $step >= $num_monkey)
  {
   $start = ($step+$start)%$num_monkey;
  } else
  {
   //这一圈找到就直接踢它
   $start = $start + $step;
  }
  unset($monkeys[$start]);    //踢猴子
  sort($monkeys);        //让猴子重新站好
 }
}



你可能感兴趣的:(php算法题)