zoukankan      html  css  js  c++  java
  • Python 约瑟夫问题

    约瑟夫问题:有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))
  • 相关阅读:
    web项目优化
    mysql 优化笔记
    Java 调用 google 翻译
    Git回滚merge操作
    mybatis 批量插入 返回主键id
    idea tomcat debug 失效
    mysql 常用语句
    xstream 解析xml报文
    activeMQ 讲解及实战
    linux svn apache
  • 原文地址:https://www.cnblogs.com/wztshine/p/12939839.html
Copyright © 2011-2022 走看看