猴子选大王,约瑟夫问题

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)
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页