var
n,i,j,s,m:longint;
c:string;
f:char;
begin
readln(n);
readln(c);
c:=c+c+c;
m:=0;
for i:=n+1 to n+n do
begin
s:=2;
if m>n then
begin
writeln(n);
halt;
end;
if c[i]='r'then
begin
f:='r';
end
else
begin
if c[i]='b'then
f:='b'
else
f:='w';
end;
for j:=i-1 downto i-n do
begin
if f='w' then
begin
f:=c[j];
inc(s);
end;
if(c[j]='w')or(c[j]=f)then
inc(s)
else
break;
end;
if c[i+1]='r'then
f:='r'
else
begin
if c[i+1]='b'then
f:='b'
else
f:='w';
end;
for j:=i+2 to i+n do
begin
if(f='w')then
begin
f:=c[j];
inc(s);
end;
if(c[j]='w')or(c[j]=f)then
inc(s)
else
break;
end;
if s>m then m:=s;
end;
writeln(m);
end.
一道算法题,目标是在一条由红、白、蓝三种颜色珠子组成的项链上找到最佳断点,以便收集到最多的相同颜色珠子。允许将白色珠子视为红色或蓝色。

1201

被折叠的 条评论
为什么被折叠?



