# -*- coding: UTF-8 -*-
'''
【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
'''
def josephus(n,k):
if k==1:
print('survive:',n)
return
p=0
people=list(range(1,n+1))
while True:
if len(people)==1:
break
p=(p+(k-1))%len(people)
print('kill:',people[p])
del people[p]
print('survive:',people[0])
if __name__=='__main__':
josephus(10,4)
josephus(10,2)
josephus(10,1)
阅读(566) | 评论(0) | 转发(0) |