您的位置:首页 > 编程语言 > Python开发

简洁之美 -约瑟夫环的python 解法

2015-10-07 17:19 399 查看
问题描述:

约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

print ("version: python3.4")
def josephus(n,k):
index=0
people=list(xrange(1,n+1))
while True:
if len(people)==1:
break
index=(index+(k-1))%len(people)
print('kill:',people[index])
del people[index]
print('survive:',people[0])
if __name__=='__main__':
josephus(8,3)


解析一下: 主要用到python中列表(lsit)下标访问特性。之前构思用C++ 实现的时候,需要自己构建双向链表,才能实现。

百度时,发现一个更全的连接。
http://baike.baidu.com/link?url=jGCdWXzolqUD64rlcOTZ9Q4wuo_gl52RKKrAii6hMklSnQ1Us-5wT1mMJrE_YRDRDwgeCMNui0R5KasGhsEHDq#2_8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: