%
%writefile ysf.py
defmove
(players,step)
: num = step -
1while num >0:
tmp = players.pop(0)
num = num -
1return players
defplay
(players, step, alive)
:"""
模擬約瑟夫問題的函式
input:
players: 參加遊戲的人數;
step: 數到step數字的人數淘汰;
alive: 倖存人數,遊戲結束。
output:
返回乙個列表,列表中的元素為倖存者編號。
"""l =
[i for i in
range(1
,players+1)
]while
len(l)
>alive:
l = move(l,step)
l.pop(0)
return
(l)players_num =
int(
input
("請輸入參加遊戲的人數"))
step_num =
int(
input
("請輸入淘汰的數字"))
alive_num =
int(
input
("請輸入倖存的人數"))
alive_list = play(players_num, step_num, alive_num)
print
(alive_list)
writing ysf.py
約瑟夫問題(優化優化再優化)
約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。1 模擬方法 2 數學方法 模擬方法就是所謂的乙個個模擬,乙個乙個出列...
約瑟夫環的數學優化
首先,約瑟夫環的數學優化方法為 為了討論方便,先把問題稍微改變一下,並不影響原意 問題描述 n個人 編號0 n 1 從0開始報數,報到 m 1 的退出,剩下的人繼續從0開始報數。求勝利者的編號。我們知道第乙個人 編號一定是 m 1 n 出列之後,剩下的n 1個人組成了乙個新的約瑟夫環 以編號為k m...
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...