首页 > 编程语言 > 详细

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

时间:2015-10-07 18:50:28      阅读:217      评论:0      收藏:0      [点我收藏+]

问题描述:

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

print ("version: python3.4")
def josephus(n,k):
    index=0
    people=list(range(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

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

原文:http://www.cnblogs.com/hans-201506/p/4858997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!