Zjyyc_Oj——K 食堂排队

K 食堂排队

链接:http://nwanna.cn/contests/6/board/challenge/11
java
2000 MS
64 MB
c
2000 MS
64 MB
c++11
2000 MS
64 MB

Description:

XX大学的食堂非常美味,每天到了饭点,食堂就会人山人海。由于计算机学院的女生数量稀少,计算机学院的男生们为了保障自己学院的女生们能够尽快享用美食,会主动和女生交换位置。但是交换位置是按照一定的规则进行的:每一秒钟队列中的每个男生都会和相邻的女生交换位置,直到女生全部在男生前面为止。现在请你计算一下,所有女生都交换到男生前面需要耗时多久?

Input:

测试样例由多组测试数据组成。每组测试数据第一行输入一个由B和G字符串s ( 1 <= s.length <= 100000 )代表食堂队列,其中B代表男生,G代表女生。

Output:

输出所有女生都交换到男生前面需要的耗时

Sample Test:

Sample Input 1

BGBB
BGBG
GB

Sample Output 1

1
2
0

Hint:

第一组样例:BGBB -> GBBB 耗时1秒,所有女生全部在男生前面
第二组样例:BGBG -> GBGB -> GGBB 耗时2秒,所有女生全部在男生前面
第三组样例:GB(所有女生已经在所有男生之前),耗时0秒,所有女生在男生前面

正确代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
	string s;
	while(cin>>s){
		int len=s.length();
		int g=0;
		int ans=0;
		int tingzhidian=0; 
		for(int i=0;i<len;i++){
			
			if(s[i]=='G'){
				
				if(ans<i-g||ans==0){
					
					ans=i-g;
				}
				else{
					ans++;
				}
				//cout<<ans<<" "<<i-g<<endl;
				g++;
				
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}
/*
BBBGGGGBBBBBBBG
10
BBGGGGGBG
7
BBGGBG
4
GGGGBBBBBG
5

BBGBBBG
5
BBBBGBBG

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值