在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能  PHP/ 猴子當(dāng)大王的算法解析

猴子當(dāng)大王的算法解析

一群猴子排成一圈,按1,2,…,n依次編號(hào)。然后從第1只開(kāi)始數(shù),數(shù)到第m只,把它踢出圈,從它后面再開(kāi)始數(shù),再數(shù)到第m只,在把它踢出去…,如此不停的進(jìn)行下去,直到最后只剩下一只猴子為止,那只猴子就叫做大王。要求編程模擬此過(guò)程,輸入m、n,輸出最后那個(gè)大王的編號(hào)。提示:約瑟夫環(huán)問(wèn)題。
答案:
<?php

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

?>

想問(wèn)下為什么可以使用這個(gè)方式進(jìn)行求出最后的勝利者?看到很多比較復(fù)雜遞歸的算法都沒(méi)有這個(gè)簡(jiǎn)單,所以想找人分析下,謝謝了。

回答
編輯回答
兔囡囡

根據(jù)約瑟夫環(huán)的推導(dǎo)公式f(n) = x = (f(n-1) + 3) % n直接套用的,這是個(gè)經(jīng)典問(wèn)題,百科解釋已經(jīng)很全面了

2017年3月10日 01:02