2746 約瑟夫問題(單向迴圈鍊錶解法)

2022-06-20 17:57:11 字數 1005 閱讀 1039

描述約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下乙隻猴子時,這個猴子就是猴王,程式設計求輸入n,m後,輸出最後猴王的編號。

輸入每行是用空格分開的兩個整數,第乙個是 n, 第二個是 m ( 0 < m,n <=300)。最後一行是:

0 0輸出

對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號

樣例輸入

6 2

12 4

8 30 0

樣例輸出

5

17

1

/*約瑟夫問題(單向迴圈鍊錶解法)

2先建立含有n個猴子結點的單向迴圈鍊錶,然後模擬報數過程,將第m個猴子結點刪除,最後當只有乙個猴子結點時跳出迴圈,輸出結果

*/3 #include4

struct

monkey;

8int

main()

1718 link=lastmonkey=null;

19for(i=1;i<=n;i++)

26else30}

31/*

遍歷32

monkey=link;

33while(monkey != null)

*/37 lastmonkey->next=link;//

構成環38

39int count=1;//

從1開始計數

40while(link->next !=link)

47 link=link->next;

48 count++;49}

50 printf("

%d\n

",link->id);

51delete link;52}

53return0;

54 }

單向迴圈鍊錶 約瑟夫問題

班級活動中,乙個班n人圍成一圈玩遊戲時,從某乙個人開始數數,當數到m的那個人必須表演乙個節目,同時這個人退出遊戲。如何安排位置,能使自己避免表演節目呢?此類問題與約瑟夫問題是同一類問題。有名的約瑟夫問題 n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。例如n 5,m...

約瑟夫問題(單向迴圈鍊錶)

約瑟夫問題有時也稱為約瑟夫斯置換或者猴子選大王問題,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 假設有nums個節點,從第startno個開始報數,輸出第countnum個節點,並將第countnum個節點從nums個節點中刪除,請問輸出...

單向迴圈鍊錶 約瑟夫環

寫個約瑟夫環,檢驗一下自己的學習狀況.include define elemtype int typedef struct lnodesqlist void initlist sqlist l,elemtype n void round sqlist l,int m,int n int main v...