Python約瑟夫問題

2021-09-30 19:49:20 字數 1133 閱讀 6940

題目內容:

已知n個人(以編號0,1,2,3...n-1分別表示)圍坐在一張圓桌周圍。從編號為0的人開始報數1,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。

輸入格式:

兩個正整數n, m,其中3<=n<=100, 1<=m<=n

輸出格式:

按照順序出列的人的編號列表

輸入樣例:

輸出樣例:

[1, 3, 0, 4, 2]

輸入樣例:

輸出樣例:

[2, 5, 8, 11, 3, 7, 0, 6, 1, 10, 4, 9]

編號從1到n,如果退出,則將編號變為0。迴圈n次退出

def josephus(n,m):

"""環的問題,

共有n個人圍成一圈,從1開始報數,數到m時退出,再從1開始,直到所有人退出

"""people = list(range(1,n+1))

index = 0

res =

#給n個人編號放到表people中,從下標為0的人開始

for i in range(n):

#for迴圈用來控制內部迴圈執行次數

count = 0

while count < m:

if people[index] != 0:

count += 1

if count == m:

#把退出的人的編號置0

people[index] = 0

index = (index+1) % n

return res

if __name__ == '__main__':

n = int(input())

m = int(input())

res = josephus(n,m)

print(res)

python實現約瑟夫 約瑟夫問題python實現

python語言之如何實現約瑟夫環問題 def josephus n,m if type n 60個人從1開始編號每人拿乙個號碼牌排成圈,從 1開始報數,第一次報數 totalnum 猴子總數 startnum 開始序號 intervalnum 間隔數def kingelect totalnum,s...

python解決約瑟夫問題

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...

python 用解決約瑟夫問題

coding utf 8 created on 2017年8月8日 author administrator 用python實現迴圈鍊錶,解決約瑟夫問題 class person def init self,num,next none self.next next self.num num defc...