猴子选大王算法
2017 年 8 月 22 日 at 下午 3:10分类:PHP
猴子选大王
从1号猴子开始沿顺时针方向从1开始报数,报到n的猴子出局
再从刚出局猴子的下一个位置重新开始报数
如此重复
直至剩下一个猴子,它就是大王
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function monkeyKing($m, $n){ $arr=range(1,$m); $i = 0; while(count($arr) > 1){ if(($i+1)%$n == 0){ unset($arr[$i]); }else{ // 没有叫到n的放回数组 array_push($arr, $arr[$i]); //删除本次循环的数字 unset($arr[$i]); } $i++; } return reset($arr); } var_dump(monkeyKing(10,3)); exit; |