山东智趣岛论坛

 找回密码
 立即注册
查看: 592|回复: 0
打印 上一主题 下一主题

约瑟夫问题

[复制链接]
智趣岛刘奕辰老师

38

主题

47

帖子

9888万

积分

管理员

BOSS

Rank: 9Rank: 9Rank: 9

积分
98888934

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2024-7-9 14:24:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
def josephus(n, m):
    # 初始化一个循环队列
    circle = [i for i in range(1, n+1)]
    # 用来追踪循环队列中的位置
    current_index = 0

    while len(circle) > 1:
        # 当前要出列的人员索引
        out_index = (current_index + m - 1) % len(circle)

        print(circle[out_index])
        # 将要出列的人员移除
        _ = circle.pop(out_index)
        # 更新当前索引位置
        current_index = out_index

    # 返回最后一个人员,即获胜者
    #return circle[0]

# 使用函数
winner = josephus(8, 5)
print(f"The winner is {winner}!")

382363955
回复

使用道具 举报

QQ|山东智趣岛论坛 ( 鲁ICP备2023024048号 )

GMT+8, 2025-3-1 07:07 , Processed in 0.189182 second(s), 37 queries .

Powered by Discuz! X3.3 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表