猴子选大王

<?php
/*
问题描述:

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

function dll($n,$m){
    //共多少个
    for($i=1;$i<=$n;$i++){
        //创建数组
        $arr[] = $i;
    }
    $j=0; //设置数组指针
    while(count($arr)>1){
        //遍历数组 判断当前猴子是否为出局序号,
        //如何是则出局,否则放到数组的最后
        if(($j+1) % $m!=0){
          array_push($arr,$arr[$j]); //本轮非出局猴子放到数组尾部
        }    
        unset($arr[$j]); //删除原位置
        $j++;
    }
    return $arr;
}

var_dump(dll(20,5));
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值