php 算法知识 猴子选大王

一群猴子排成一圈,按1,2,...,n依次编号。

然后从第1只开始数,数到第m只,把它踢出圈,

从它后面再开始数,再数到第m只,在把它踢出去...,

如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。

示意图:

php代码:

 1 $arr = [1,3,5,7,9,11,12,14,16];
 2 echo getLastOne($arr,12);
 3 function getLastOne($arr,$m){ 
 4   $i= 0;
 5   while(count($arr)!=1) {
 6 
 7 
 8     if(($i+1)%$m==0){
 9         unset($arr[$i]);
10     }else{ 
11        $arr[]=$arr[$i]; //array_push()也是调用这个
12                  unset($arr[$i]);
13     }
14     $i++;
15   } 
16 return $arr[$i];
17 }
原文地址:https://www.cnblogs.com/zhanghanwen16/p/8515757.html