首页 > 编程语言 > 详细

Python 约瑟夫问题

时间:2020-05-22 23:07:09      阅读:52      评论:0      收藏:0      [点我收藏+]

约瑟夫问题:有x个人围成一圈,从某个人开始报数,报到y数的人自杀,然后从死掉的这个人的下一个人开始重新报数,循环往复,一直到剩下一个人。

class Queue():
    # 使用python内置的list,实现简单的队列
    def __init__(self):
        self.queue = []
    
    def inqueue(self,item):      # 入队
        self.queue.append(item)
    
    def outqueue(self):          # 出队
        poped = self.queue.pop(0)
        return poped
    
    def size(self):              # 队列大小
        return len(self.queue)
    
    def __str__(self):           # 打印队列(打印一个对象时,会打印它的__str__函数的返回值。)
        return repr(self.queue)


def yue(list,num):
    queue = Queue()
    for li in list:
        queue.inqueue(li)
    print(queue)                  # 打印初始队列
    while queue.size() > 1:        # 只要队列人数大于一
        for i in range(num-1):        # 循环num-1个数
            queue.inqueue(queue.outqueue())    # 队首的人拍到队尾
            print(queue)
        queue.outqueue()           # 数到num的人出队死掉了
    return queue.outqueue()

print(yue([a,b,c],3))

 

Python 约瑟夫问题

原文:https://www.cnblogs.com/wztshine/p/12939839.html

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