描述
众所周知,厦门大学百年校庆即将到来,大家都踊跃报名志愿者。
由于人数众多,所以报名的时候需要排队。嘉庚的男生都很谦让,如果他们身后有女生的话,就会优先让女生排到他们前面,自己则到后一个的位置。
不过让位置也是需要时间的,每次需要1s。现在给你初始的队列和规定的时间,你可以给出最终的队列么?
输入
只有一组案例。
一个正整数n,代表队列的长度。
然后是一个正整数t,表示规定时间的秒数。
最后是一个长度为n字符串,表示队列的初始状态。(其中用字符’G‘表示女生,用字符’B’表示男生,字符串保证只有‘B’和’G’两种字符)
对于50%的数据,1<=n,t<=10。
对于100%的数据,1<=n,t<=50。
输出
输出一个字符串,表示队列的最终状态,然后换行。
样例输入
5 1
BGGBG
样例输出
GBGGB
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int n, t;
cin >> n >> t;
string a;
cin >> a;
bool x[1005];
for (int i = 0; i < 1005; i++)
{
x[i] = false;
}
while (t != 0)
{
if (n == 1)
{
cout << a << endl;
}
else
{
for (int i = 1; i < n; i++)
{
if (a[i - 1] == 'B' && a[i] == 'G')
{
x[i - 1] = true;
}
else
{
x[i - 1] = false;
}
}
for (int i = 1; i < n; i++)
{
if (x[i - 1])
{
swap(a[i - 1], a[i]);
}
}
}
t--;
}
cout << a << endl;
return 0;
}
//我这个代码比较复杂 若有更好的解法可私我0.0