0.
約瑟夫環(約瑟夫問題)是乙個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列,約瑟夫環結束。
1.用佇列,可以很好的模擬這個思路。
class program
console.writeline("約瑟夫環開始了");
int flag = 1;
while (pes.count >= 2)
else
}console.writeline("約瑟夫環結束,最後出隊的是:"+pes.dequeue());
console.readkey();
//另外一種思路
//給每個人的標誌設為0,一開始都是0.然後出隊時把標誌位設為1.
//當報數沒有出隊,則下個0(到尾部時,則從頭為0的開始),直到出隊時,把0設為1,遇到1則跳過。
//最終所有的0都會置1,都出隊了。//}
}
示例列印如下:
定義參與的人數:
10定義規定的數字:
5約瑟夫環開始了
出隊:5
出隊:10
出隊:6
出隊:2
出隊:9
出隊:8
出隊:1
出隊:4
出隊:7
約瑟夫環結束,最後出隊的是:3
約瑟夫環O N 解法
無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜度高達o nm 當n,m非常大 例如上百萬,上千萬 的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最後的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效率,就要打破常規...
約瑟夫環問題C 遞迴解法
約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後 1 結果...
約瑟夫環數學解法
無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜度高達o nm 當n,m非常大 例如上百萬,上千萬 的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最後的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效率,就要打破常規...