之前出现不可描述的bug,这里贴上代码:
#include<iostream>
#include<vector>
using namespace std;
vector<int>s;
int mx=0;
int main()
{
int n;
cin>>n;
s.push_back(0); //在0位置虚拟一个S
for(int i=1;i<=n;i++)
{
char c;
cin>>c;
if(c=='S')
s.push_back(i);
}
s.push_back(n+1) //在n+1位置虚拟一个S
if(s.size()==2) //加上之前的两端虚拟的S等于2也就是最初S的个数为0
cout<<n;
else if(s.size()==3)//如果初始串只有一个S
cout<<n-1;
else
{
for(int i=2;i<(int)s.size();i++) //枚举每个三元组
{
if((s.size()-3) < (n+2-(s[i]-s[i-2])-1))
mx=max(mx,s[i]-s[i-2]-1); //如果三元组之外有G
else
mx=max(mx,s[i]-s[i-2]-2); //如果没有G的话
}
cout<<mx;
}
return 0;
}