闵溪端 2023-05-19 16:29 采纳率: 91.7%
浏览 18
已结题

python 数据结构

已知有n个人围坐在一张圆桌周围,从第s个人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列;一次规律重复下去,直到圆桌周围的人数少于m时结束,输出剩下的人的序号。
提示:n个人围成一个圈可以用一个列表来表示。


```python
class Queue:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)


def circle(num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

```

  • 写回答

2条回答 默认 最新

  • 瞬间的未来式 2023-05-19 16:36
    关注

    该回答引用chatgpt:
    从第s个人开始报数,我们通过将队列中的人按照报数顺序依次出队再入队,将第s个人移动到队列的开头位置。

    然后,我们开始报数和出列的循环过程,直到队列中的人数少于m为止。在每一轮中,我们按照数到m的人出列的规则,将报数到m的人从队列中移除。

    最后,我们将剩下的人的序号存储在remaining_people列表中,并返回该列表。

    示例调用中的输出结果将会是剩下的人的序号。

    img

    
    class Queue:
        def __init__(self):
            self.items = []
     
        def isEmpty(self):
            return self.items == []
     
        def enqueue(self, item):
            self.items.insert(0, item)
     
        def dequeue(self):
            return self.items.pop()
     
        def size(self):
            return len(self.items)
     
     
    def josephus(n, s, m):
        queue = Queue()
        for i in range(1, n + 1):
            queue.enqueue(i)
        
        # 从第s个人开始报数
        for _ in range(s - 1):
            queue.enqueue(queue.dequeue())
        
        # 数到m的人出列
        while queue.size() > m:
            for _ in range(m - 1):
                queue.enqueue(queue.dequeue())
            queue.dequeue()
        
        # 返回剩下的人的序号
        remaining_people = []
        while not queue.isEmpty():
            remaining_people.append(queue.dequeue())
        return remaining_people
    
    # 示例调用
    n = 10  # 人的总数
    s = 3   # 从第s个人开始报数
    m = 4   # 数到m的人出列
    remaining_people = josephus(n, s, m)
    print("剩下的人的序号:", remaining_people)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月19日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表