问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第 几号的那位。
解决思路: 我的解决思路是先给这n个人排序生成代表他们身份标记的列表,对列表进行循环迭代,找出每次列表中要退出圈子的人的标记,然后在列表中删除这些标记,直到列表长度为1,列表里只有一个人的标记时,这个标记就是最后留下来的人的标记。
代码实现:
person=int(input("请输入围成一圈的人数:"))
list=[]
for i in range(1,person+1):
list.append(i)
pass
def printInfo(listArr,count):
list1 = []
for i in listArr:
count += 1
if count % 3 == 0:
list1.append(i)
for i in list1:
listArr.remove(i)
return listArr,count
def printOut(listArr,count):
list1,count1=printInfo(listArr,count)
if len(list1)==1:
for i in list1:
print("最后留下来的人是编号为{0}的人".format(i))
pass
else:
printOut(list1,count1)
pass
printOut(list,0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)