鍍金池/ 問(wèn)答/PHP/ 約瑟夫環(huán)的問(wèn)題

約瑟夫環(huán)的問(wèn)題

function yuesefu($n,$m) {  
    $r=0;  
    for($i=2; $i<=$n; $i++) {
        $r=($r+$m)%$i;  
    }
    return $r+1;  
}  
echo yuesefu(10,3)."是猴王";

這個(gè)哪位大神可以給我解釋一下。。。是什么樣的邏輯?

回答
編輯回答
大濕胸

問(wèn)題描述

設(shè)有編號(hào)為1,2,……,n的n(n>0)個(gè)人圍成一個(gè)圈,從第1個(gè)人開(kāi)始報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào)m的人出圈,再?gòu)乃南乱粋€(gè)人起重新報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào)m的出圈,……,如此下去,直到所有人全部出圈為止。當(dāng)任意給定n和m后,設(shè)計(jì)算法求n個(gè)人出圈的次序。

最后剩下的結(jié)點(diǎn)就是勝利者

問(wèn)題思路

題中的方法是利用歸納過(guò)的公式

clipboard.png

推到過(guò)程:

clipboard.png

參考:約瑟夫問(wèn)題

2017年1月9日 07:48
編輯回答
孤影

http://blog.csdn.net/qq_25973...

這個(gè)從數(shù)學(xué)角度解釋了,非常適合理解

2018年8月15日 14:37