js 約瑟夫 問題 解

2021-09-22 05:40:02 字數 610 閱讀 2613

偶然看到技術群裡 發出這麼乙個問題

n 個人圍成一圈, 從1到3開始報數,  報到 3 的人 退出遊戲. 問,最後乙個留下來的人是 最開始的 誰?

覺得挺有意思的, 就自己寫了一段:

/**

* @param n 圍成圈的人數

* @param m 報數最大值

* * n 個人圍成一圈, 從1到m開始報數, 報到 m 的人 退出遊戲. 問,最後乙個留下來的人是 最開始的 誰?

*/function getpeople(n,m)

var number = 1; // 定義 報的 數

var grouplen = group.length; // 總人數

for (var i = 0; i < i+1; i++)

if (grouplen == i + 1)

if(group.length == 1)

number++;

} console.log("獲勝者是:" + group[0])

}

利用 死迴圈 以及 達到最大值後, 初始化 i 的方法.很容易就可以解答這個問題.

約瑟夫環問題解決

問題描述 編號為1 n的n個士兵圍坐在一起形成乙個圈,從編號為1的士兵依次開始報數 1,2,3.依次報 數到m的士兵會被殺死出列,之後的士兵再從1開始報數。直到最後剩下一士兵。求這個士兵的編號。方法一 陣列 第一次做這個題的時候,第一反應就是用陣列來做。建立乙個boolean陣列,用true表示沒出...

約瑟夫問題解法,不是最優解

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...

9 2練習題5 約瑟夫問題 題解

題目出處 洛谷 p1996 略有修改。題目描述 約瑟夫問題是乙個非常經典的問題。n個人 n 100 圍成一圈,從第乙個人開始報數,數到m的人出列,再由下乙個人重新從1開始報數,數到m的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。輸入格式 輸入一行包含兩個正數 n 和 m 以乙個空...