約瑟夫環問題(一)(難度 1顆星)

2021-08-02 02:21:04 字數 751 閱讀 6404

問題描述:

編號為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 單鏈表的迴圈體現在建表上,這裡採用尾插法 右插法 建表,以...