def
move
(players,step)
:return players #根據step做了元素的移動
defplay
(players,step,alive)
:"""
input:
players:參加遊戲的人數
step:數到step數字的人數淘汰;
alive:倖存人數,即遊戲結束。
output:
返回乙個列表,列表中的元素為倖存者的編號
"""#生成乙個列表,從[1,...,players]
list1=
[i for i in
range(1
,players+1)
]#進入遊戲的迴圈,每次數到step淘汰,step之前的元素移動到列表末尾
#遊戲結束的條件:列表剩餘人數小於alive
while
len(list1)
>alive:
#移動step前的元素到列表末尾
num=step-
1while num>0:
tmp=list1.pop(0)
num=num-
1 list1=move(list1,step)
list1.pop(0)
#將如何step的元素從列表中刪除
return list1
players_num=
int(
input
("請輸入參加遊戲的人數"))
step_num=
int(
input
("請輸入淘汰的數字"))
alive_num=
int(
input
("請輸入倖存人數"))
alive_list=play(players_num,step_num,alive_num)
print
(alive_list)
約瑟夫問題公升級版
編號為1 n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數,可以自由輸入 開始人選乙個正整數作為報數上限值m,從第乙個人按順時針方向自1開始順序報數,報道m時停止報數。報m的人出列,將他的密碼作為新的m值,從他順時針方向上的下乙個人開始從1報數,如此下去,直至所有人全部出列為止。includ...
約瑟夫環加強版
include include typedef struct node node node creat int n s next head next free head return s next void main printf n d號淘汰 p next data temp p next 應刪除...
約瑟夫環公升級版
題目 問題分析 和約瑟夫問題不同的是,公升級版多了乙個密碼,這個密碼可以從線性表匯入,也就是在建立結點時,有三個區域密碼域password 資料域位置position 指標域next。如下圖所示 實現 import ds01.動態陣列.arraylist 約瑟夫環公升級版 public class ...