描述約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下乙隻猴子時,這個猴子就是猴王,程式設計求輸入n,m後,輸出最後猴王的編號。
輸入每行是用空格分開的兩個整數,第乙個是 n, 第二個是 m ( 0 < m,n <=300)。最後一行是:
0 0輸出
對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號
樣例輸入
6 2樣例輸出12 4
8 30 0
517
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...