1520:厦大百年校庆-2

该代码实现了一个模拟厦门大学百年校庆排队场景的程序,男生会礼让女生,每轮交换位置需要1秒。在给定的时间内,程序会输出最终的排队顺序。示例中,初始队列为'BGGBG',经过1秒后,队列变为'GBGGB'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述
众所周知,厦门大学百年校庆即将到来,大家都踊跃报名志愿者。
由于人数众多,所以报名的时候需要排队。嘉庚的男生都很谦让,如果他们身后有女生的话,就会优先让女生排到他们前面,自己则到后一个的位置。
不过让位置也是需要时间的,每次需要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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值