约瑟夫环问题

我当时的大数据导论的过程性考核题目
具体忘了,要是用到了参数自己改吧

问题描述:

N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号)

代码(Python)

def josephus(n, m):  # 定义约瑟夫函数
    p = 0  # 初始化出列学生的
    people = list(range(1, n + 1))  # 建立一个1到n的列表
    for i in range(1, 16):  # 循环15次
        p = (p + (m - 1)) % len(people)  # 求出第几号学生出列
        print(people[p], )  # 输出
        print('号学生出列***')  # 输出格式
        print('----------')  # 输出格式
        del people[p]  # 出列的人在列表中删除

if __name__ == '__main__':
josephus(30, 9)  # 调用约瑟夫函数

运行结果:

最后修改:2021 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏