266B.Queue at the School

题目

在这里插入图片描述

翻译

题目

    课间休息时, n n n个学生在食堂排队。最初他们按着顺序进入食堂,但过了一会,男孩们开始觉得站在女生前面很尴尬,于是他们开始每秒让女生往前走。
    让我们更精确地描述这一过程。假设队列中的位置按从1到n的整数顺序编号。在位置1的人最先被服务。如果在 x x x时刻,男孩站在第 i i i位置,而女孩站在第 i + 1 i+1 i+1位置,那么 x + 1 x+1 x+1时刻,女孩会在第 i i i位置,而男孩则在第 i + 1 i+1 i+1位置。时间按秒计算。
    你会知道一开始孩子们位置,请确定一下 t t t时刻后队伍的情况。

输入

    第一行为2个整数 n n n t t t(1 ≤ n n n t t t ≤ 50 ),表示队伍中孩子们的数量以及你需要确认的多少时间后的队伍移动情况的时间。
    下一行为一个字符串 s s s,表示一开始的队伍情况。如果第 i i i个位置为男孩,则 s s s中第 i i i个字符为“B”,反之为“G”。

输出

输入

    输出经过 t t t时刻后以字符串 a a a表示的队伍情况。如果在所需时间之后第 i i i个位置为男孩,则 a a a中第 i i i个字符必须等于“ B ”,否则必须等于“ G ”。

分析

    分析题意可知就是循环t次,每次遍历一次字符数组,找到“BG”,替换成“GB”,需要注意的是,如果找到了则应将指向字符的变量+1,例如,BGG,如果不+1的话,则第一次循环就会变成GGB,而这结果应该是第二次循环后出现。

代码

#include<iostream>
using namespace std;
int main()
{
	int n, t;
	char s[51];
	cin >> n >> t>>s;
	while (t--)
	{
		for (int i = 0; i < n - 1; i++)
		{
			if (s[i] == 'B' && s[i + 1] == 'G')
			{
				s[i] = 'G';
				s[i + 1] = 'B';
				i++;
			}
		}
	}
	cout << s;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值