Python版的迷你程序——约瑟夫环_约瑟夫python代码

Python版的迷你程序——约瑟夫环_约瑟夫python代码

编码文章call10242025-10-01 18:46:5411A+A-

约瑟夫环的问题,具体到某个编码来解决可谓是很多很多,这里对于约瑟夫环先打个比方:一辆小巴车被查出严重超车,最多载10人的超载至30人。于是乘客下车排成一队,排队的位置即为他们的编号。然后就是报数,从1开始,数到6的人被安排滞后乘车。如此循环,直到不超过 10 人为止,问都有哪些编号的人需要下车了,哪些编号可以乘车?当然这里只考虑仅有一辆车的情况哈,至于后续车和后续登车的问题不做考虑哈。

python代码把编号和列表元素的值一一对应了,每次移除了列表中编号(值)的匹配项。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
#

def joseph(totalnum, step, staynum):
    lists = list(range(1, totalnum+1))
    checkcnt = 0
    while len(lists) > staynum:
        for i in lists[:]:         # 列表中的值 不是列表的索引          lists[:]   
            checkcnt += 1
            if checkcnt == step:
                checkcnt = 0
                lists.remove(i)    # 移除列表中某个值的第一个匹配项     list.remove(obj)
                print("%-3d号下车了" % i)
    return lists

stays = joseph(30, 6, 10)
print("最后留下%-3d人" % len(stays))
print("编号是:", stays)
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4