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
*/