問題描述:
編號為1,2,…,n的n個人按順時針方向圍坐一圈,任選乙個正整數作為報數上限m,從第乙個人開始按順時針方向從自1開始順序報數,報道m時停止報數.報m的人出列,從他的順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止,設計乙個程式求出出列順序.
輸入輸出描述:
m和n由使用者輸入,並且保證m和n的範圍是【1,1000】,輸出出列序列。
問題分析:
因為這個是要求出所有的出列序列,所以目前還沒想到效率更高的方法,只能用模擬法,時間複雜度是o(m*n),設定三個變數:
index:表示目前所執行的人的號碼
count:表示目前報的數是多少
outpeoplecount:表示目前出列的人數
如果是要求出最後乙個出列人的標號,請參考我的另外一篇文章:
#include
#include
#include
int main()
if (ncount % m == 0)
if (noutpeople == n)
break;
nindex = (nindex + 1) % n;
ncount++;
}free(pisout);
return
0;}
執行結果:
約瑟夫環問題(二) (難度 2顆星)
問題描述 編號為1,2,n的n個人按順時針方向圍坐一圈,任選乙個正整數作為報數上限m,從第乙個人開始按順時針方向從自1開始順序報數,報道m時停止報數.報m的人出列,從他的順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止,輸出最後乙個出列的人的編號。輸入輸出描述 m和n由使用者...
約瑟夫環的問題1
n個人做成一圈,順時針由1開始給他們編號,然後由第乙個人進行報數,數到m的人出局,接著下乙個人又從1開始報數,只剩最後乙個人的時候求這個人的編號 特例 當m 2的時候 n 2 k 如果只有2個人,顯然剩餘的為1號如果有4個人,第一輪除掉2,4,剩下1,3,3死,留下1 如果是8個人,先除去2,4,6...
資料結構作業1 約瑟夫環問題
資料結構課作業,上網找了一圈發現沒有和我們題一樣的。自己寫乙個分享給有需要的同學。題目如下 題目要求迴圈單鏈表完成,先放一下結構體,很簡單的乙個單鏈表的儲存結構。typedef struct lnode 定義單鏈表節點型別 linklist 單鏈表的迴圈體現在建表上,這裡採用尾插法 右插法 建表,以...