猴子选大王算法

说明:

n个猴子围成一圈,从某个开始报数1-2……m,1-2……m报“m”的猴子就被淘汰,
游戏一直进行到圈内只剩一只猴子它就是猴大王了。

代码实现

1,常规代码

function fun1($n,$m)
{ 
    if($n<2){ 
        echo '猴子数量不能小于2';
    }
    $arr = range(1,$n);
    $num = 0;
    for($i=2;$i<=$n*$m;$i++){ 
        foreach($arr as $key => $val){ 
            $num++;
            if($num == $m){ 
                unset($arr[$key]);
                $num = 0;
                if(count($arr) == 1){ 
                    return reset($arr);
                }
            }
        }
    }
}

2,数论代码

function fun2($n,$m) { 
    $a=0; 
    for($i=2;$i<=$n;$i++) {
        $a=($a+$m)%$i; 
    }
    return $a+1; 
} 
echo yuesefu(7,3);

你可能感兴趣的:(算法)