305 约瑟夫问题1 #
- 问题描述
- 循环队列求解
问题描述 #
约瑟夫环是一个数学的应用问题,也是利用Python设计程序进行解答的一个经典编程问题,我们将用Python程序完整地表达出我们的数学思维,进而解决问题。问题描述:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。.从编号为k的人开始报数,数到m的那个人出圈;他的下一个人又从1开始报数,数到m的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。
例如:有10个人围成一圈进行此游戏,每个人编号为1-10。.若规定数到3的人出圈。.则游戏过程如下。
- 开始报数,第一个数到3的人为3号,3号出圈
- 从4号重新从1开始计数,则接下来数到3的人为6号,6号出圈
- 按以上的方法依次类推
循环队列求解 #
假设有n个人围成一个圈(从1开始),规定第m个人出圈,过程如下:
- n个人围成圈,无论这个循环队列的大小是否超出了n,让每个出队的人再进队,不断重复达到围成圈的实际操作
- 依次报数,根据先进先出的规律,每次从队首出一个数,再由队尾进入,进行m-1次循环
- 第m次时,则队首便是需要出圈的人,进行一次出队操作
- 依次重复以上步骤,直到队列为空
小结 #
习题 #
- 详细模拟循环队列报数的过程
- 体会循环队列在问题中所起的作用