PTA的Python练习题(十七)

第4章-18 猴子选大王

我的思路是两层循环,count计算如果取余等于3就从数组里面删除,一开始以为挺对的(代码如下):

a=eval(input())
s=[]
count=0
flag=0
for i in range(1,a+1):
    s.append(i)
#print(s)
while(flag <= 0):
  count = 0
  c = len(s)
  for i in s:
      count=count+1
      if count%3==0:
          s.remove(i)
          #print(s)
      if count==c:
          break
      if c==1:
          print(s[0])
          flag=1
          break

运行以后进入死循环,因为数组最后会剩下两个数,无法结束,而且那两个数是固定的,1和2

思路错就错在围成一圈

参考代码:

n=int(input())
monkey=[]
timer=0
count=0
if(n>0 and n<=1000):
    for i in range(1,n+1):
        monkey.append(i)
    while(len(monkey)>1):
       timer+=1
       count+=1
       if(count>len(monkey)):
           count=1
       if(timer==3):
           timer=0
           monkey.pop(count-1)
           count-=1
    print(monkey[0])

想了很久没有想通,明早还有课,有空重新来写一下

posted @ 2020-02-24 21:17  ch0bits  阅读(321)  评论(0编辑  收藏  举报