問題典故:在羅馬人佔領喬塔帕特後,39 個猶太人與約瑟夫及他的朋友躲到一個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了一個自殺方式,41個人排成一個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下一個重新報數,直到所有人都自殺身亡為止


然而約瑟夫 和他的朋友並不想遵從,約瑟夫要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過了這場死亡遊戲

 


以上列故事為例設計一程式滿足以下條件:


1.可自由設定參加總人數


2.可自由設定死亡的報數間隔


3.可自由設定存活的殘留人數


4.顯示殘留存活人數的位置號碼

 


這個問題基本上不難,程式流程大約如下:


1.首先為參加的每個人從1開始編號


2.使用迴圈搭配移位暫存器來處理報數問題


3.使用Rotate 1D Array元件使陣列內數值循環移動,符合報數位置時從陣列中剔除該數值


4.剩餘的就是殘存人數的位置號碼

 


完成的程式如下

20120221-01  

 

 

執行的結果

20120221-02  

arrow
arrow
    文章標籤
    作業習題 約瑟夫問題
    全站熱搜

    未出師的小工程師 發表在 痞客邦 留言(1) 人氣()