function monkey($m,$n){ if(is_int($m) || is_int($n)) return -1; if($m < 0 || $n<0) return -1; //生成一个随机数组 $arr = range(1,$n,1);//2从1开始,$n结束,定长是1 $i= 0 ;//当前的指针 while(count($arr) >1){ if(($i+1)%$m == 0){ //这个时候$i 就是m unset($arr[$i]); //然后剔除 }else{ array_push($arr,$arr[$i]);//如果$i的值不是m,那么从新把$i的值插入到末尾,然后删除前面原有$i的值,因为是圈型 unset($arr[$i]); } $i++; } return $arr[$i]; } print_r(monkey(3,5)); 假如m =3,n=5;
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
世界上最美的风景,是自己努力的模样