美文网首页
约瑟夫环问题

约瑟夫环问题

作者: 李小萌mmm | 来源:发表于2018-11-19 19:46 被阅读0次

约瑟夫环:
30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某人开始从1报数 报到9的人 扔到海里 下一个人继续从1开始报数 直到扔掉15个人 结果由于神仙的保佑 15个教徒全部幸存 问最开始怎么站的

方法一

def joseph(total, begins, count):
    #total总人数30 ,begins编号1,count报数9

    queue = list(range(1, total + 1))
    
    death = (begins + count - 2) % len(queue)
    
    
    for times in range(total):
        if times ==15:
            break
        print ('out: ',queue[death])
        del queue[death]
        
        death = (death + count -1) % len(queue)
        
    print (queue)
joseph(30,1,9)

方法一打印结果

out是出局的, 列表里面的数字是存活下来的


07.png

方法二

def main():
    persons = [True]*30  #生成一个30个True的列表
    index = 0    #从0开始报数 每次index加1 当number等于9时,这个人就死了通过下标把
#这个人的列表值改成False,counter就加1 一直加到15 找出15个人跳出循环

    number = 0 
    counter = 0
    while counter<15:
        if persons[index]:
            number += 1

            if number ==9:
                persons[index] =False
                counter += 1
                number =0
        index += 1
        index %= len(persons)

    for person in persons:
        print('活'if person else"死",end='')

main()

相关文章

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 约瑟夫环问题

    0~n-1个数排成环,每次从中删除第m个数字后,问最后剩下的数字是多少 思路:使用链表模拟环状结构,到达尾部时使其...

  • 约瑟夫环问题

    思路 递推,f(n)与f(n-1)的关系,已经f(1)已知,O(n)的复杂度求出结果。f(n) = (f(n-1)...

  • 约瑟夫环问题

    约瑟夫环:30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某...

  • 约瑟夫环问题

    参考文章 约瑟夫环之二(用递归的思想解决Josephus问题) 解释 解法 初始情况: 0, 1, 2 ........

  • 约瑟夫环问题

    问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编...

  • 约瑟夫环问题

    题目:一圈人围坐,以数字K位第一个个人,叫道 M 的人自动出列,请写出出列顺序 第一种方法:使用单项循环链表实现 ...

  • 约瑟夫环问题

    在刷leetCode 的时候碰到了以下问题:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始...

  • 约瑟夫环问题

  • 约瑟夫环问题

    问题描述 历史典故: 据说著名犹太历史学家 Josephus有过以下的故事: 在罗马人占领乔塔帕特后,39 个犹太...

网友评论

      本文标题:约瑟夫环问题

      本文链接:https://www.haomeiwen.com/subject/itoafqtx.html