猴子選大王,約瑟夫問題

Twoknives發表於2020-10-25

17個猴子圍成一圈,從某個開始報數1-2-3-1-2-3-……報“3”的猴子就被淘汰,遊戲一直進行到圈內只剩一隻猴子它就是猴大王

思路:本來想直接操作list,結果總是報錯,後來想了想還不如寫個單獨的陣列存放,原始陣列存放最開始的猴子與位置,在用新的陣列來標記還在圈內的

num =3 #間隔數
sum=17 #總數
now_sum = sum
a=0   #初始計數
all_list = list(range(1 , sum+1))
end_all_list = []
end_all_list =  list(range(sum))
while now_sum > 1:
    for x in range(sum):
        if all_list[x] != 0:
            a+=1
            if a == num:
                all_list[x] = 0
                a = 0
                now_sum-=1
                print(all_list)


print('end')
print(all_list)
print(end_all_list)

相關文章