/*
ID: boyshan1
PROG: beads
LANG: C++
*/
#include <iostream>
#include <fstream>
using namespace std;
int Collect(char necklace[],int length)
{
char necklace2[700];
int n;
for(n=0;n<2*length;n++)//连接两个串
{
if(n>=length)
necklace2[n]=necklace[n-length];
else necklace2[n]=necklace[n];
}
int i=0,j,k,num=0;int Max=0;
char color,color2;
bool c1=false,c2=false;
while(i<n)
{
for(j=i;j>=0;j--)//从当前位置往前遍历
{
if(necklace2[j]!='w'&&c1==false)
{
color=necklace2[j];//遇见第一个不是w的颜色记录下来
c1=true;
}
if(necklace2[j]!='w'&&c1==true&&necklace2[j]!=color)break;//继续向前走,遇到既不是"w",又不是该颜色就跳出
num++;
}
for(k=i+1;k<n;k++)//从当前位置向后遍历
{
if(necklace2[k]!='w'&&c2==false&&necklace2[k]!=color)//遇见第一个既不是w也不是上面已记录的颜色,记录下来
{
color2=necklace2[k];
c2=true;
}
if(k==length&&c2==true&&necklace2[k+1]!='w')break; //两个串交接处的处理
if(necklace2[k]!='w'&&c2==true&&necklace2[k]!=color2)break;//继续向后走,遇到既不是w又不是该颜色跳出
num++;
}
if(num>=n) //处理字符串中只有一种颜色的情况
Max=length;
else if(i>=length&&necklace2[i]!='w'&&necklace2[i+1]!='w'&&necklace2[i]!=necklace2[i+1])break;//如果两个串的交接处颜色不同,且二者没有谁是w,就没必要往下检查了
else
if(num>Max)
{
Max=num;
num=0;
c1=false;
c2=false;
}
else
{
num=0;
c1=false;
c2=false;
}
i++;
}
return Max;
}
int main()
{
ofstream fout("beads.out");
ifstream fin("beads.in");
int N,i=0;
char neck[350];
while(fin>>N)
{
while(i<N)
{
fin>>neck[i];
i++;
}
fout<<Collect(neck,N)<<endl;
i=0;
}
return 0;
}
ID: boyshan1
PROG: beads
LANG: C++
*/
#include <iostream>
#include <fstream>
using namespace std;
int Collect(char necklace[],int length)
{
char necklace2[700];
int n;
for(n=0;n<2*length;n++)//连接两个串
{
if(n>=length)
necklace2[n]=necklace[n-length];
else necklace2[n]=necklace[n];
}
int i=0,j,k,num=0;int Max=0;
char color,color2;
bool c1=false,c2=false;
while(i<n)
{
for(j=i;j>=0;j--)//从当前位置往前遍历
{
if(necklace2[j]!='w'&&c1==false)
{
color=necklace2[j];//遇见第一个不是w的颜色记录下来
c1=true;
}
if(necklace2[j]!='w'&&c1==true&&necklace2[j]!=color)break;//继续向前走,遇到既不是"w",又不是该颜色就跳出
num++;
}
for(k=i+1;k<n;k++)//从当前位置向后遍历
{
if(necklace2[k]!='w'&&c2==false&&necklace2[k]!=color)//遇见第一个既不是w也不是上面已记录的颜色,记录下来
{
color2=necklace2[k];
c2=true;
}
if(k==length&&c2==true&&necklace2[k+1]!='w')break; //两个串交接处的处理
if(necklace2[k]!='w'&&c2==true&&necklace2[k]!=color2)break;//继续向后走,遇到既不是w又不是该颜色跳出
num++;
}
if(num>=n) //处理字符串中只有一种颜色的情况
Max=length;
else if(i>=length&&necklace2[i]!='w'&&necklace2[i+1]!='w'&&necklace2[i]!=necklace2[i+1])break;//如果两个串的交接处颜色不同,且二者没有谁是w,就没必要往下检查了
else
if(num>Max)
{
Max=num;
num=0;
c1=false;
c2=false;
}
else
{
num=0;
c1=false;
c2=false;
}
i++;
}
return Max;
}
int main()
{
ofstream fout("beads.out");
ifstream fin("beads.in");
int N,i=0;
char neck[350];
while(fin>>N)
{
while(i<N)
{
fin>>neck[i];
i++;
}
fout<<Collect(neck,N)<<endl;
i=0;
}
return 0;
}