Python 約瑟夫生者死者小遊戲

2021-09-21 13:14:27 字數 1144 閱讀 1959

問題描述:

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迴圈會輸出,相當於給30個人都賦初始值1

for x in range(1,31):

people[x]=1

# print(people)

#check記數,0-9;i為人們的編號,1-30;j為下船的人數

check=0

i=1j=0

while i<=31:

#因為只有30人,當i等於31時,手動將i置為1

if i == 31:

i=1#下船15人後退出迴圈

elif j == 15:

break

else:

#people[i]為0時,表示此人已下船,i加1,check不增加,繼續迴圈

if people[i] == 0:

i+=1

continue

else:

check += 1

# i=1,check=1,...i=9,check=9

if check == 9:

#數到9的人的值設為0(下船),check置0,重新開始計數

people[i]=0

check = 0

print("{}號下船了".format(i))

#j為下船的人數,下乙個人j加1

j+=1

else:

i+=1

continue

結果:

約瑟夫生者死者遊戲

程式流程圖 sqlist 順序表型別 typedef struct lnode linknode 單鏈表型別 void initlist sqlist l 初始化線性表 void destroylist sqlist l 銷毀線性表 bool listempty sqlist l 判斷線性表是否為空...

約瑟夫生者死者小遊戲

30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?include int c 0 int i 1 int j 0 int a 30 int b 30 i...

Python約瑟夫生者死者小遊戲例項講解

問題描述 30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?解決思路 給30個人編號1 30,每個人的初值都是1 在船上 i代表他們的編號,j代表被扔下...