天天看点

约瑟夫环出圈问题python解法(猴子选大王)

一群猴子围成一圈,按1,2,3,…,n依次编号。

然后从第1只开始数,数到第m只,把它剔除圈,再重新开始数,

如此不停的进行下去,最后剩下的那只就是大王。

要求编程模拟次过程,封装一个函数,传入参数m,n,返回最后大王的编号

def monkey_choice_king(m, n):
#用列表生成式生成一个列表
    lt = [i for i in range(1, n + 1)]
    while len(lt) > 1:
    # 循环m-1次
        for x in range(m - 1):
            lt.append(lt.pop(0))
        lt.pop(0)
    return lt[0]


m = 10
n = 3
print(monkey_choice_king(m, n))