一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
<?php
class Solution {
function monkey($n,$m){
$arr = range(1,$n);
$i=0;
while(count($arr)>1){
if(($i+1)%$m!=0){
array_push($arr,$arr[$i]);//不满足条件,就往后新增用于第二次数数
}
unset($arr[$i]);//释放这个满足值
$i++;
}
return current($arr);
}
}
$clas = new Solution();
$c = $clas->monkey(6,2);
var_dump($c);
?>
使用的php函数
- range :创建一个包含x->y范围内的数组 使用规则:range(x,y) x为开始的参,y为结束的参。
- array_push :在数组尾部插入元素 使用规则 :array_push(数组,插入的元素【可以传入多个,使用‘,’分隔开】);
- unset : 释放给定的变量
- current : 输出数组中当前元素的值 使用规则 :current(数组)