八个方向搜索,搜到白子就加一,搜到黑子就退出。
代码:
const
dx:array[1..8] of longint=(-1,-1,0,1,1,1,0,-1);
dy:array[1..8] of longint=(0,1,1,1,0,-1,-1,-1);
var
s:array[0..8,0..8] of char;
i,j,k,max,p,ans:longint;
procedure init;
var
i,j:longint;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
read(s[i,j]);
readln;
end;
end;
function dfs(i,x,y:longint):longint;
begin
if (x<1) or (x>8) or (y<1) or (y>8) or (s[x,y]='.') then exit(-maxlongint); if (s[x,y]='B')
then exit(0);
dfs:=dfs(i,x+dx[i],y+dy[i])+1;
end;
begin
init;
for i:=1 to 8 do
for j:=1 to 8 do
begin
for k:=1 to 8 do
if s[i,j]='.'
then begin p:=dfs(k,i+dx[k],j+dy[k]); if p>0 then ans:=ans+p; end;
if ans>max then max:=ans;
ans:=0;
end;
writeln(max);
end.