迴圈報數(佇列版)

2021-08-15 20:03:10 字數 708 閱讀 2385

有 nn

n 個小朋友做遊戲,他們的編號分別是 1,2,3...n1,2,3...n1,

2,3.

..n。他們按照編號從小到大依次順時針圍成乙個圓圈,從第乙個小朋友開始從 11

1 報數,依次按照順時針方向報數(加一),報 mm

m 的人會離開隊伍,然後下乙個小朋友會繼續從 11

1 開始報數,直到只剩乙個小朋友為止。

第一行輸入倆個整數,nn

n,mm

m。(1≤n,m≤10001 \leq n,m \leq 10001≤

n,m≤

1000

)輸出最後乙個小朋友的編號,佔一行。

樣例輸入

10 5

樣例輸出

#include#include#includeusing namespace std;

int main()

int k,sum=1;

while(m.size()!=0||n.size()!=0)

else

if(sum==b)

else

sum++;}}

while(n.size()!=0)

else

if(sum==b)

else

sum++;}}

cout<<"\n"

}

小孩報數(順序迴圈佇列版) (10 分

有若干個小孩圍成一圈,現從指定的第1個開始報數,報到第 w個時,該小孩出列,然後從下乙個小孩開始報數,仍是報到w個出列,如此重複下去,直到所有的小孩都出列 總人數不足w個時將迴圈報數 求小孩出列的順序。演算法要求 使用順序迴圈佇列來儲存所有小孩,報數時小孩出隊,未數到w時,接著入隊 數到w時,輸出小...

小孩報數(順序迴圈佇列版) (10 分

有若干個小孩圍成一圈,現從指定的第1個開始報數,報到第 w個時,該小孩出列,然後從下乙個小孩開始報數,仍是報到w個出列,如此重複下去,直到所有的小孩都出列 總人數不足w個時將迴圈報數 求小孩出列的順序。演算法要求 使用順序迴圈佇列來儲存所有小孩,報數時小孩出隊,未數到w時,接著入隊 數到w時,輸出小...

迴圈報數問題

有n個人按照 到n編號圍成乙個圈做遊戲,從第乙個人開始從 報數,數到m的人退出遊戲,他後面的人接著重新從 開始報數 問最後剩下的人是幾號?這個問題被稱為約瑟夫 josephus 環問題。最容易想到的方法是用乙個迴圈鍊錶來模擬遊戲,直到最後只剩下1人 則可得到他的號碼 這種演算法的空間複雜度是 o n...