C 程式設計 圓桌問題

2021-10-24 03:20:37 字數 1337 閱讀 5539

【問題描述】

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

【輸入形式】

第一行乙個整數表示測試資料的組數s,接下來的s行每行包含三個正整數,分別表示好人和壞人的人數n(<=32767)、起點m、步長k(<=32767)

【輸出形式】

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

【樣例輸入】2

2 2 3

2 2 4

【樣例輸出】

ggbb

bbgg

#include

using

namespace std;

struct person

;int

answer

(int n,

int m,

int k)

per[

2*n-1]

.p=&per[0]

; per[

2*n-1]

.live=

'g';

person *now=

&per[m-1]

; person *last=

&per[m-1]

;int step,killed=0;

do now-

>live=

'b';

killed++

; last-

>p=now-

>p;

now=now-

>p;

}while

(killed;for

(int i=

0; i<

2*n; i++

) cout<.live;

cout

}int

main()

time [s]

;for

(int i=

0; i)for

(int i=

0; i)answer

(time[i]

.n,time[i]

.m,time[i]

.k);

return0;

}

圓桌問題 a

時間限制 1 sec 記憶體限制 128 mb 提交狀態 題目描述 圓桌上圍坐著2n個人其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數數到第m個人,則立即處死該人,然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座...

練習 圓桌問題

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

約瑟夫環問題 圓桌報數問題

約瑟夫環問題 一圈共有n個人,開始報數,報到m的人自殺,然後重新開始報數,問最後自殺的人是誰?如圖 內環表示人排列的環,外環表示自殺順序 上面n 41,m 3。最普通辦法就是模擬整個過程 建乙個bool陣列,true表示此人還活著,false表示已經自殺。可以模擬整個過程 cpp view plai...