字符串和常用的数据结构之约瑟夫环问题

匆匆过客 提交于 2020-03-04 06:37:09

约瑟夫环问题

“”"
有15个基督徒和15个非基督徒,
大家围成圈,
由某个人开始从1报数,报到9的人扔到海里面;
他后面的人接着从1开始报数,报到9的人扔到海里面,直到扔掉15个人
最后15个基督徒都幸免于难,为啥
“”"


def main():
  persons = [True] * 30
  counter, index, number = 0, 0, 0
  while counter < 15:
    if persons[index]:
      number += 1
      if number == 9:
          persons[index] = False
          counter += 1
          number = 0
    index += 1
    index %= 30
  for person in persons:
   print('基' if person else '非', end='||')

if __name__ == '__main__':
  main()

在这里插入图片描述

找出座位号

def main(n, k):
    # n代表总人数,k代表报数的数字
    List = list(range(1, n + 1))
    index = 0
    while List:
        temp = List.pop(0)
        index += 1
        if index == k:
            index = 0
            continue
        List.append(temp)
        if len(List) == 15:
            List.sort()
            print(List)
            break


if __name__ == '__main__':
    main(30, 9)

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!