使用python實現約瑟夫環

2021-09-28 01:27:33 字數 887 閱讀 6289

約瑟夫環,通俗的講就是n個人圍著圓桌坐一圈,從第m個人開始從1報數,報數到k數的人出局,之後的人又從1開始報數,直到所有人都出局。

以下**為python模擬約瑟夫環出局人員的序號順序:

人數有30人,從第乙個人的位置開始報數,數到9則出局,之後又從1開始報數,達到出局人數時結束。

# 約瑟夫環

people=

for x in

range(1

,31):

people[x]=1

check=

0# i:起始位置設定

# j:出局人數統計i=1

j=0while i<=31:

if i ==31:

i=1# 設定出局人數

elif j ==15:

break

else

:if people[i]==0

: i+=

1continue

else

: check+=

1# 設定出局條件

if check ==9:

people[i]=0

check =

0print

("{}號下船了"

.format

(i))

j+=1else

: i+=

1continue

主要思想:構建乙個長度為30的全1 list,從初始位置開始,遇見1,條件變數check加1,滿足出局條件時輸出出局人員所在位置並將該位置的資料置0。無論遇見的list資料的值為0或1,i的值都加1,當i==31(超出既定人數30)則從頭開始,即置i為1,迴圈至出局人數滿足要求時結束**。

python實現約瑟夫環

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後結果 1即...

python實現約瑟夫環

約瑟夫環問題的邏輯很簡單就是一群人圍成乙個圈指定從其中乙個人開始報數,指定報數到多少,報到這個數的人就出局,剩下的人從剛出局的人的位置的下乙個人繼續開始遊戲。看起來比文字描述直觀,我就直接上 了。def ysf sum,bsit,distance,survive sum總的人數,bsit報數開始的位...

用python實現約瑟夫環

先上 def circle number,k length number people for index in range number j 0 temp 0 res 0 while number 1 index j length if people index 0 temp 1 if temp ...