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

約瑟夫環(huá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è)哪位大神可以給我解釋一下。。。是什么樣的邏輯?

回答
編輯回答
大濕胸

問題描述

設(shè)有編號為1,2,……,n的n(n>0)個(gè)人圍成一個(gè)圈,從第1個(gè)人開始報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào)m的人出圈,再從他的下一個(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)就是勝利者

問題思路

題中的方法是利用歸納過的公式

clipboard.png

推到過程:

clipboard.png

參考:約瑟夫問題

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

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

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

2018年8月15日 14:37