约瑟夫环问题简单实现

作为一个小白,刚看到这个问题确实是一脸懵逼,各路大佬的实现方法确实是消化不了

借鉴这个文章的实现方法 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)

简单实现了约瑟夫环的规则,后续会继续完善。

猜你喜欢

转载自www.cnblogs.com/yuzhui/p/11086975.html