Vector HDU 4841 圓桌問題

2021-10-08 13:25:18 字數 851 閱讀 8665

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人;然後從被處死的人之後開始數數,再將數到的第m個人處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。

多組資料,每組資料輸入:好人和壞人的人數n(<=32767)、步長m(<=32767)

對於每一組資料,輸出2n個大寫字母,『g』表示好人,『b』表示壞人,50個字母為一行,不允許出現空白字元。相鄰資料間留有一空行。

2 32 4

gbbg

bggb

使用vector模擬,編號為0-2n-1,初始都為好人,然後再數數刪除第m個人,直到刪除了n個人為止即可;

因為是乙個環,每數到第m個人刪除即可,所以判斷第m個人需要取模;

最後vector中剩下的就都是好人了,然後使用了雙指標的方式,根據對應位置輸出值即可

輸出的時候需要注意,每兩組資料之間都有空行,同時一行最多存放50個字母

#include

#include

using

namespace std;

intmain()

//雙指標,j從0-2*n-1遍歷,只有當v[i]的編號等於j時說明編號為j的沒有被刪除,即對應的為好人

for(

int i=

0,j=

0;j<

2*n;j++

)else cout<<

"b";

} cout

}return0;

}

HDU 4841 圓桌問題

acm模版 這個題簡單的來就是暴力列舉約瑟夫環,當然,太暴力也不好,適當的用資料結構優化一下也是有必要的,這裡用向量維護,成功水過。include include include include include using namespace std const int maxn 4e4 const...

hdu4841 圓桌問題

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人 然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。多...

HDU 4841 圓桌問題

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人 然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。i...