约瑟夫环问题
我当时的大数据导论的过程性考核题目
具体忘了,要是用到了参数自己改吧
问题描述:
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) # 调用约瑟夫函数