約瑟夫環問題的邏輯很簡單就是一群人圍成乙個圈指定從其中乙個人開始報數,指定報數到多少,報到這個數的人就出局,剩下的人從剛出局的人的位置的下乙個人繼續開始遊戲。**看起來比文字描述直觀,我就直接上**了。
def ysf(sum,bsit,distance,survive):#sum總的人數,bsit報數開始的位置,distance報數的間距,survive存活多少人時停止
people={}
for i in range(1,sum+1):
people[i]=1
for i in range(1,sum+1):
print(people[i],end=" ")
print()
t=bsit
j=sum
check=0
while t<=sum+1:
if t==sum+1:
t=1elif j==survive:
break
else:
if people[t]==0:
t+=1
continue
else:
check+=1
if check==distance:
people[t]=0
check=0
print("{}號下船了".format(t))
print(people)
j-=1
else:
t+=1
呼叫函式結果如下
python實現約瑟夫環
約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後結果 1即...
用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 ...
使用python實現約瑟夫環
約瑟夫環,通俗的講就是n個人圍著圓桌坐一圈,從第m個人開始從1報數,報數到k數的人出局,之後的人又從1開始報數,直到所有人都出局。以下 為python模擬約瑟夫環出局人員的序號順序 人數有30人,從第乙個人的位置開始報數,數到9則出局,之後又從1開始報數,達到出局人數時結束。約瑟夫環 people ...