猴子选大王

/*
问题描述:

    一群猴子排成一圈,按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));
?>

你可能感兴趣的:(知识点拓展)