首页 > 其他 > 详细

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

时间:2020-11-09 09:53:41      阅读:34      评论:0      收藏:0      [点我收藏+]
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, 输出最后那个大王的编号。

原文:https://www.cnblogs.com/xiong-hua/p/13946848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!