0011-编程打卡:按照如下规则进行报数
本帖最后由 不二如是 于 2022-8-29 18:58 编辑一星答案:
count=1
#设置一个计数器用于报数
def fun(x):
global count
#Python2当函数内需要对全局变量赋值时需要先声明
if len(x)==1:
print x
#退到只剩1个人的时候就能知道答案
else:
for i in x:
if count==3:
n=x.index(i)
x='a'
count=1
#当报数到3时将该人赋值为a,并重置计数器
else:
count+=1
#没报到3就下一个
for i in x:
if i=='a':
del x
#将变成3的人统统消灭
fun(x)
#数组已经改变了,重新调用一次函数
n=input('请输入人数:')
array=range(1,n+1)
fun(array)
二星答案:
n = int(input('请输入n的值:'))
arr = list(range(1,n+1,1))
i = 1
m = 0
while len(arr)>1:
#print('m',m,'i',i)
if i == 3 and m < len(arr):
arr.pop(m)
i = 1
continue
elif m > len(arr)-1:
m = 0
continue
m += 1
i += 1
print(arr)
三星答案:
**** Hidden Message *****
基础语法:
https://www.bilibili.com/video/BV1c4411e77t
算法讲解:
https://www.bilibili.com/video/BV1HT4y1K7DY
学习一下 本帖最后由 atc123 于 2022-8-29 22:17 编辑
学习一下 假设一共10个人,第一次去掉3,然后是从4开始报数还是从1开始报数? 本帖最后由 qq1151985918 于 2022-8-30 00:05 编辑
def foo(arr):
if len(arr) < 3:
return arr[-1]
return foo(arr + arr[:2])
if __name__ == '__main__':
n = int(input('请输入n的值:'))
print(foo(list(range(1, n+1)))) 学习一下 约瑟夫环问题 学习一下 学习一下 qq1151985918 发表于 2022-8-29 23:15
假设一共10个人,第一次去掉3,然后是从4开始报数还是从1开始报数?
1 三星答案非常棒。 学习一下
页:
[1]