编写一个函数 king,实现猴子选大王的功能。 新猴王的选择方法是:让 N 只候选猴子围成一圈(最多100只猴子),从某位置起顺序编号为 1 ~ N 号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。
时间: 2024-02-21 10:01:41 浏览: 163
猴子选大王算法的实现
以下是实现猴子选大王功能的函数 king,使用了循环链表来模拟猴子围成一圈的情况。其中,n 表示猴子的数量,kill 表示每轮报数到 3 的猴子编号,最后返回的是剩下的猴子编号。
```python
def king(n):
class Node:
def __init__(self, data):
self.data = data
self.next = None
head = Node(1)
pre = head
for i in range(2, n+1):
cur = Node(i)
pre.next = cur
pre = cur
pre.next = head
cur, pre = head, None
while cur.next != cur:
for i in range(1, 3):
pre = cur
cur = cur.next
pre.next = cur.next
cur = pre.next
return cur.data
```
例如,执行 king(5) 就可以得到最后剩下的猴子编号:
```python
>>> king(5)
3
```
阅读全文