描述約瑟夫問題:
有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
就用佇列指定乙個規則,不滿足規則的就出隊,留下的就是符合規則的。
//佇列實現約瑟夫問題
# include# includeusing namespace std;
queueq;
int result(int n,int m)
q.pop();
j=m;
n--;
} return q.front();
}int main()
return 0;
}
約瑟夫問題 鍊錶 佇列實現
和之前說的猴子選大王一樣,一共n個人報數,報道m的人出列,之後繼續從1開始報數,直到最後就剩乙個人 之前說了一下陣列的實現方法,其實還有很多實現的方法,這裡說一下鍊錶剔除的方法以及c 佇列函式的實現方法 先說鍊錶實現吧 include include define len sizeof struct...
約瑟夫環問題 佇列實現,迴圈陣列實現
起源 約瑟夫環問題的起源來自猶太歷史學家約瑟夫和他的朋友以及39其餘的猶太人,總共41人為了躲避敵人,藏在乙個山洞中,39個猶太人決定寧願死也不被敵人抓到,於是決定自殺,所有人排成乙個圈,由第乙個人開始報數,每當數到3,就自殺。這個遊戲接著從自殺的位置開始,還是從1數到3。依次類推,約瑟夫將朋友和自...
約瑟夫環 佇列實現
約瑟夫環這個經典的資料結構鍊錶問題,想必大家都有所涉及。我們怎麼用佇列去實現這個問題呢,首先我們要將所有的人進行入隊操作,因為編號是1 n,那麼我們使用乙個迴圈壓入就行。for int i 1 i n i 然後我們會發現只要留下最後乙個人即不再報數了,所以我們可以判斷當佇列的長度大於1時便讓佇列一直...