国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Python解“約瑟夫生者死者小游戲”

2020-11-06 04:19
電腦報 2020年40期
關鍵詞:報數(shù)流程圖約瑟夫

為了讓大家提高對循環(huán)以及判斷語句的掌握,今天分享一道經典題目《約瑟夫生者死者小游戲》。有三十個人在一條船上,但是超載了,需要十五個人下船,于是人們排成一隊,排隊的位置即是他們的編號(1-30),排好隊后,從排頭往排尾按照順序從1到9循環(huán)報數(shù),報數(shù)到9的人就下船,如此循環(huán),直到船上僅剩下15人。請問,有哪些人下了船?

通過解答這道題能夠提高大家繪制流程圖、理解循環(huán)體以及判斷結構的掌握程度(圖1)。

從流程圖中我們可以發(fā)現(xiàn)使用了一層循環(huán)、三層判斷。首先是循環(huán)報數(shù)(遍歷到最后一個再重新回到初始位置開始下一次遍歷)直到下船人數(shù)達到十五人。其次判斷遍歷的人是否還在船上,如果在,則報數(shù);否則的話跳過本次循環(huán),遍歷下一個人。最后是報數(shù)的內容,如果報數(shù)到9,那個人就要下船,計數(shù)器要返回1,并且下一次遍歷時就不考慮他,按照次序依次遍歷。相信大家如果能夠看懂流程圖,那么問題就可以迎刃而解了。

通過流程圖把程序的流程搞清楚之后,我們可以用任何編程語言把代碼寫出來,我這里選擇使用Python軟件來編寫,代碼如圖2。

首先外層people我選擇用字典來統(tǒng)計。按照循環(huán)的指示,初始情況給30個人都賦予了初始值為1。接下來新建三個變量check作為計數(shù)(0-9);i作為人們的編號(1-30);j為下船的人數(shù),一旦下船的人數(shù)等于15,退出循環(huán)。接下來我們使用一個while循環(huán)控制,因為只有30個人所以當i循環(huán)到超過30時,手動將i設置為1,進行重復的循環(huán)遍歷,當j等于15時,代表下船的人數(shù)達到約定人數(shù),跳出循環(huán)。

接下來就是本題最關鍵的環(huán)節(jié)——統(tǒng)計計數(shù)了。當people[i]為0時,表示此人已下船,i加1,繼續(xù)循環(huán),當people[i]為1時進行check統(tǒng)計,每次加1,當check等于9時,代表報數(shù)到9,對應人需要下船,將此人的people[i]值設置為0,顯示j為下船的人數(shù),下一個人j加1,運行效果如圖3。

本次實例主要考查對循環(huán)和判斷結構的理解能力,繪制流程圖是一項非常重要的技能,很多復雜的程序不可能上來就寫代碼,流程圖能夠幫助我們很好地捋順思路。

猜你喜歡
報數(shù)流程圖約瑟夫
云的識別指南
偷懶發(fā)明的鐵柵欄
圍圈報數(shù)
童話
日安,白天
流程圖學習指南
Getting a Job初入職場的面試技巧
報數(shù)
報數(shù)