以下是利用单向循环链表模拟此过程的 Python 代码:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

def monkey_king(m, n):
    # 创建循环链表
    head = Node(1)
    curr = head
    for i in range(2, m+1):
        new_node = Node(i)
        curr.next = new_node
        curr = curr.next
    curr.next = head

    # 依次出圈,直到只剩下最后一只猴子
    while curr.next != curr:
        # 找到第n个猴子的前一个猴子
        for _ in range(n - 1):
            curr = curr.next
        # 输出出圈的猴子编号
        print(curr.next.data)
        # 删除第n个猴子
        curr.next = curr.next.next
    # 输出最后剩下的猴子编号
    print(curr.data)

# 测试
monkey_king(10, 3)

输出结果为:

3
6
9
2
7
1
8
5
10
4
猴子选大王:用单向循环链表模拟经典游戏

原文地址: https://www.cveoy.top/t/topic/qym 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录