約瑟夫問題No 2

2021-10-02 09:33:22 字數 636 閱讀 5038

題目:n 個小孩圍坐成一圈,並按順時針編號為1,2,…,n,從編號為 p 的小孩順時針依次報數,由1報到m ,當報到 m 時,該小孩從圈**去,然後下乙個再從1報數,當報到 m 時再出去。如此反覆,直至所有的小孩都從圈**去。請按出去的先後順序輸出小孩的編號。

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

output:按出圈的順序輸出編號,編號之間以逗號間隔。

sample input:

8 3 4

0 0 0

sample output:

6,2,7,4,3,5,1,8

#include#include#includeusing namespace std;

//用迴圈佇列的方式解決約瑟夫問題

int main()

//使編號為p的小孩放在隊首

for(int i=1;i//m-1個小孩重新入隊

while(!children.empty())

//將第m個小孩出隊

if(children.size()==1) cout

}

約瑟夫問題No 2

思路 設定乙個陣列,將其全部設定為1.由於陣列下標是從0開始,所以方便期間,遍歷時從 p 1 開始。將temp作為計數的乙個工具,每當遍歷次數達到要求m時,將下標為 i n 的陣列置為0,以至於下一次遍歷時跳過該陣列同時將計數工具置為0,重新計數。count作為出隊的次數,由於count初始化為0,...

No 2 完全揹包問題

題目 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題十分類似01揹包,不同的是每種物品有無限件。也就是從每種物品的角度考慮,與它相關的策略已並非取或不取兩種...

No 2 氣泡排序

學習演算法打卡第二天 今天記錄一下學的 氣泡排序 在寫上一節 桶排序 的時候,就在想我要是要將小數排序怎麼辦,或者要是排序的數的範圍在很大很大又怎麼辦?利用 桶排序 很浪費空間,浪費可恥!但是 氣泡排序 可以解決這些問題。比如我們要將5個數按從大到小的順序進行排序,利用 氣泡排序 首先將第一位和第二...