【Python】约瑟夫问题

约瑟夫环是一个经典的数学问题,通过Python编程可以简洁地解决。文章介绍了如何利用Python创建一个列表,并按照特定规则删除元素,模拟出约瑟夫环的过程,直至所有元素出列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

用python解决约瑟夫问题代码量及其简短,只需定义一个长为n的列表,循环删掉第k+m-1个元素即可

def josephus(n, k, m):
    queue = (list)(range(1, n+1))
    count = k-1
    for i in range(0, n+1):
        if len(queue) != 0:
            count = (count+m-1)%len(queue)
            print("out", str(queue[count]))
            del queue[count]
        else:
            print("WIN!")

if __name__ == '__main__':
    josephus(13,4,2)
>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值