网站推广营销案例北京关键词优化服务
约瑟夫游戏的大意是:一条船上有30个人,因为在海上遇到风暴
因此船长告诉乘客,必须牺牲15个人,并议定30个人围成一圈,
由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,
数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。
问题是编号多少会被牺牲?
'''
案例16:约瑟夫生者死者链队列
约瑟夫游戏的大意是:一条船上有30个人,因为在海上遇到风暴
因此船长告诉乘客,必须牺牲15个人,并议定30个人围成一圈,
由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,
数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问题是编号多少会被牺牲?'''
people={}
for x in range(1,31): #for循环给30个人都赋值,初始值为1.people[x]=1
print(people)
check=0 #此处i为编号,j为下船人数
i=1
j=0
while i<=31: #此处当i=31时,设置i=1.依次循环if i==31:i=1elif j==15: #j为下船人数,当15人下船后退出循环breakelse:if people[i]==0:i+=1continueelse:check+=1if check==9: #此处为数到九的人设为0,然后重新开始计数people[i]=0check=0print("编号{}下船了".format(i))j+=1else:i+=1