八仙祝壽問題(約瑟夫環問題)

2021-10-22 14:22:57 字數 888 閱讀 8312

八仙祝壽問題:八仙都要給王母煮熟,但是先後問題沒有解決。於是太上老君出了乙個主意,八位神仙圍成一圈,按0~7編號,由零號開始進行1到3的報數,報到3的出列,然後由他相鄰的下一位進行1到3的報數。重複此過程,那麼出列的順序就是被煮的順序。

原理:報道3的位置上的人都要出列

這個很簡單只要i%3==0;就可以了。

問題在於陣列中的元素是從零開始的,怎麼解決這個問題呢。

很簡單,只要我們將i換成i+1再取餘就可以了。

現在來確定一下八仙的先後拜壽順序

由於二維陣列本身是由一維陣列構成的,所以我們可以用單一的下標輸出陣列中的對應元素。

但是一些下標明顯越界了,可以看出,下標越界之後只要將其減去數值對應長度就可以正確輸出,當然,減去之後我們就輸出,然後再進行迴圈,前提條件是(i+1)%= =0的條件滿足下才這樣只做。

第二層我們就減去(陣列的長度 * 1),第三層就減去(陣列的長度 * 2)。可以用sizeof函式求陣列的位元組數再除以首sizeof陣列名[0]來求陣列的長度。

之後用迴圈輸出滿足條件時下標對應的元素。

結束條件:輸出八次之後跳出迴圈。

**如下:

輸出結果:

總結:1二維陣列中的元素可以用理解為一維陣列從而進行單一的下標輸出。避免雙變數的麻煩。

2確定i減回去去再加回去的條件。

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...

約瑟夫環問題

約瑟夫環問題 問題描述 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人...