分析一下题目,首先可知分开的位置肯定是在两个不同的相邻字母之间,可以使用for语句求出每一个可以分开的位置处的可被收集的珠子数目,保存最大的那个数目,最后输出即可。
/*
ID: whutzha1
PROG: beads
LANG: C++
*/
#include<fstream>
using namespace std;
ifstream cin("beads.in");
ofstream cout("beads.out");
int main()
{
char arr[350];
int n,i,j;
cin>>n;
cin>>arr;
int num,num1,num2,max=0;
bool flag=true;
for (i=0;i<n;i++)
{
num1=1;num2=1;
if (arr[i%n]!=arr[(i+1)%n])
{
flag=false;
char a1=arr[i];
char a2=arr[i+1];
j=i-1;
if (a1!='w')
while(arr[(j+n)%n]==a1||arr[(j+n)%n]=='w')
{
num1++;j--;
}
else
while(arr[(j+n)%n]=='w'||arr[(j+n)%n]!=a2)
{
num1++;j--;
}
j=i+2;
if (a2!='w')
while(arr[(j+n)%n]==a2||arr[(j+n)%n]=='w')
{
num2++;j++;
}
else
while (arr[(j+n)%n]==a2||arr[(j+n)%n]!=a1)
{
num2++;j++;
}
num=num1+num2;
if (max<num&&num<=n) max=num;
}
}
if (flag) max=n;
cout<<max<<endl;
return 0;
}