猴子选大王,约瑟夫问题
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)

浙公网安备 33010602011771号