有n個小孩圍成一圈並一次編號,教師置頂從第m個小孩開始報數,當報到第s個小孩時,即令其出列。然後再從下乙個孩子起從1開始繼續報數,數到第s個小孩又令其出列,知道所有的孩子都一次出列,求小孩出列的順序。
分析:由於問題中的小孩圍成乙個圈,因而可以用乙個環形鏈來表示。在此,用結構體陣列構成乙個環形鏈,然後出列記錄即可。
**如下:
#include#include#include#includeusing namespace std; struct node stu[1010]; int main() if(m >= n) k = 1; //m為起點,則應該指向m的前乙個 else if(m == 1) k = n; else k = m - 1; while(count != n) printf("%4d", stu[k].no); stu[k].no = 0; //標記出列 if(++count % 10 == 0) printf("\n"); } return 0; }
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...
約瑟夫問題 約瑟夫環
約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...
約瑟夫問題
這是17世紀的法國數學家加斯帕在 數目的遊戲問題 中講的乙個故事 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法 30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次...