A46046. 约瑟夫问题是个有名的问题:N 个人围成一圈,顺序为 0,1,2,3,4,5,从 0 号这个人开始报数,报到 2 的将被杀掉,接下去重新开始报数,报到3 的将被杀掉...以此类推,最后剩下一个,其余人都将被杀掉。例如N=6,被杀掉的顺序是:1,4,3,0,5;最后只剩下 2 这个人。
填空题
中等
知识点
题目描述
约瑟夫问题是个有名的问题:N 个人围成一圈,顺序为 0,1,2,3,4,5,从 0 号这
个人开始报数,报到 2 的将被杀掉,接下去重新开始报数,报到3 的将被杀掉...以此类
推,最后剩下一个,其余人都将被杀掉。例如N=6,被杀掉的顺序是:1,4,3,0,5;最后只剩下 2 这个人。
参考答案
llist=
n=int(input(“请输入参与人数:”))
for i in range(0,n-1):
llist.append([i,i+1])
llist.append([n-1,0])
head=0
long=n
k=head
i=1
p=2
while(long>1):
if i==p-1:
t=llist[k][1]
print(llist[t][0])#索引为 t 的删除
head=llist[k][1]
if t==head:
llist[k][1]=llist[t][1]
i=1
p+=1
long=long-1
k=llist[k][1]
k=llist[k][1]
i+=1
print(llist[head][0])
上一题
下一题