Python约瑟夫生者死者小游戏实例讲解

(编辑:jimmy 日期: 2024/9/21 浏览:2)

问题描述:

30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

解决思路:

给30个人编号1-30,每个人的初值都是1(在船上),i代表他们的编号,j代表被扔下船的人数(j=15时循环结束),用check记数,check=9时将对应编号i的人置0(扔下船)并让check重新记数。

当i等于31时,手动将i置为1

当对应编号i的人值为0时,代表此人已经不在船上,i+1找到下一个人记数,以此类推。

people={}
for x in range(1,31):
  people[x]=1
# print(people)
check=0
i=1
j=0
while i<=31:
  if i == 31:
    i=1
  elif j == 15:
    break
  else:
    if people[i] == 0:
      i+=1
      continue
    else:
      check+=1
      if check == 9:
        people[i]=0
        check = 0
        print("{}号下船了".format(i))
        j+=1
      else:
        i+=1
        continue

执行以上实例,输出结果为:

9号下船了
18号下船了
27号下船了
6号下船了
16号下船了
26号下船了
7号下船了
19号下船了
30号下船了
12号下船了
24号下船了
8号下船了
22号下船了
5号下船了
23号下船了

一句话新闻

微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。