新聞中心
本篇文章帶大家介紹php版的約瑟夫環(huán)問(wèn)題(猴子選大王)。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),懷化企業(yè)網(wǎng)站建設(shè),懷化品牌網(wǎng)站建設(shè),網(wǎng)站定制,懷化網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,懷化網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
約瑟夫環(huán)問(wèn)題(猴子選大王)PHP版
約瑟夫斯問(wèn)題問(wèn)題有時(shí)候也被描述成猴子選大王問(wèn)題,題目如下。(最后會(huì)貼上約瑟夫問(wèn)題的來(lái)歷)
一群猴子排成一圈,按1,2,…,n依次編號(hào)。
然后從第1只開(kāi)始數(shù),數(shù)到第m只,把它踢出圈,從它后面再開(kāi)始數(shù),再數(shù)到第m只,在把它踢出去…,如此不停的進(jìn)行下去,直到最后只剩下一只猴子為止,那只猴子就叫做大王。
要求編程模擬此過(guò)程,輸入m、n, 輸出最后那個(gè)大王的編號(hào)。
用程序模擬該過(guò)程,代碼如下:
function monkeyKing($n, $m)
{
$arr = range(1, $n); //構(gòu)造一個(gè)數(shù)組
$i = 1; //從第一個(gè)開(kāi)始循環(huán)
while (count($arr) > 1) { //如果總數(shù)大于1
if ($i % $m != 0) {
$arr[] = $arr[$i - 1]; //不被踢出則壓入數(shù)組尾部
}
unset($arr[$i - 1]); //壓入數(shù)組然后刪除
$i++; //繼續(xù)循環(huán)
}
return $arr[$i - 1]; //直至最后剩下一個(gè)為大王
}
print_r(monkeyKing(5, 3)); //第4只為大王
下面是模擬的過(guò)程,對(duì)于不剔除的猴子,不斷的加入數(shù)組尾部:
$n = 5 $m = 3 $arr = [1, 2, 3, 4, 5] $i $arr ---+------------------------ 1 x 2 3 4 5 1 2 x x 3 4 5 1 2 >3 x x x 4 5 1 2 4 x x x x 5 1 2 4 5 x x x x x 1 2 4 5 >6 x x x x x x 2 4 5 7 x x x x x x x 4 5 2 8 x x x x x x x x 5 2 4 >9 x x x x x x x x x 2 4 10 x x x x x x x x x x 4 2 11 x x x x x x x x x x x 2 4 >12 x x x x x x x x x x x x 4
約瑟夫問(wèn)題來(lái)歷:
這個(gè)問(wèn)題是以弗拉維奧·約瑟夫命名的,它是1世紀(jì)的一名猶太歷史學(xué)家。他在自己的日記中寫(xiě)道,他和他的40個(gè)戰(zhàn)友被羅馬軍隊(duì)包圍在洞中。他們討論是自殺還是被俘,最終決定自殺,并以抽簽的方式?jīng)Q定誰(shuí)殺掉誰(shuí)。約瑟夫斯和另外一個(gè)人是最后兩個(gè)留下的人。約瑟夫斯說(shuō)服了那個(gè)人,他們將向羅馬軍隊(duì)投降,不再自殺。約瑟夫斯把他的存活歸因于運(yùn)氣或天意,他不知道是哪一個(gè)。
網(wǎng)頁(yè)標(biāo)題:一文解決約瑟夫環(huán)問(wèn)題(PHP版)
本文鏈接:http://www.dlmjj.cn/article/djsjiej.html


咨詢(xún)
建站咨詢(xún)
