正解:枚举每一个点,往八个方向搜索
var i,j,l,tot,t,ans:longint;
a:array[0..9,0..9] of char;
function min(x,y:longint):longint;
begin
if x<y then exit(x) else exit(y);
end;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
procedure pd();
begin
t:=0;
for l:=i-1 downto 1 do
begin
if a[l,j]='W' then inc(t)
else
if a[l,j]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=i+1 to 8 do
begin
if a[l,j]='W' then inc(t)
else
if a[l,j]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=j-1 downto 1 do
begin
if a[i,l]='W' then inc(t)
else
if a[i,l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=j+1 to 8 do
begin
if a[i,l]='W' then inc(t)
else
if a[i,l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
{鏂滅嚎}
t:=0;
for l:=1 to min(i,j)-1 do
begin
if a[i-l,j-l]='W' then inc(t)
else
if a[i-l,j-l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=1 to 8-max(i,j) do
begin
if a[i+l,j+l]='W' then inc(t)
else
if a[i+l,j+l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=1 to min(8-i,j-1) do
begin
if a[i+l,j-l]='W' then inc(t)
else
if a[i+l,j-l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
t:=0;
for l:=1 to min(i-1,8-j) do
begin
if a[i-l,j+l]='W' then inc(t)
else
if a[i-l,j+l]='B' then
begin
inc(tot,t);
break;
end
else
break;
end;
end;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
read(a[i,j]);
readln;
end;
for i:=1 to 8 do
begin
for j:=1 to 8 do
if (a[i,j]<>'W')and(a[i,j]<>'B') then
begin
tot:=0;
pd();
if tot>ans then ans:=tot;
end;
end;
writeln(ans);
end.