作为一个小白,刚看到这个问题确实是一脸懵逼,各路大佬的实现方法确实是消化不了
借鉴这个文章的实现方法 https://www.jianshu.com/p/aeedc8c3514a 我可以用小白的方式实现,如下
# 约瑟夫环问题 # 1. 13个人,每数到3的人出列,最后留下一个人 people_list = [] for i in range(1, 14): people_list.append(i) print(people_list) # 将参与的13个人列出 flag = 1 # 标尺: 用来标记出列的人, 本例中即(1 -> 2 -> 3 -> 1) index = 0 # 列表中各数的下标, 用来对标尺标记的人做操作 count = 0 # 统计出局的人数, 这里用作退出循环的判断 while count < 12: if flag == 3 and people_list[index] != 0: # 将标尺数位3的人标记为0并出列 print(people_list[index], end=' ') # 打印出列的人 people_list[index] = 0 count += 1 flag = 0 # 有人出列后标尺清零, 再从0开始(到下一个人时即1) flag += 1 index += 1 if index == 13: # 下标到最后一个人之后再回到第一个人继续 index = 0 print() print(people_list)
简单实现了约瑟夫环的规则,后续会继续完善。