📄 ac1043.pas
字号:
program tju1043;
const
maxn=4;
dx:array[1..8]of shortint=(-1,-1,-1,0,1,1,1,0);
dy:array[1..8]of shortint=(-1,0,1,1,1,0,-1,-1);
var
map:array[0..maxn,0..9,0..9]of char;
t,u,n,i,j,ans:longint;
procedure update;
var
t,i,j:shortint;
begin
t:=0;
for i:=1 to 8 do
for j:=1 to 8 do
if map[n,i,j]='B' then inc(t) else if map[n,i,j]='W' then dec(t);
if t>ans then ans:=t;
end;
procedure search(l:byte;c1,c2:char);
var
i,j,x,y,d:byte;
pass,eat:boolean;
begin
pass:=true;
for i:=1 to 8 do
for j:=1 to 8 do
if map[l-1,i,j]=' ' then begin
map[l]:=map[l-1];eat:=false;
for d:=1 to 8 do begin
x:=i+dx[d];y:=j+dy[d];
if map[l,x,y]=c2 then begin
repeat
inc(x,dx[d]);inc(y,dy[d]);
until map[l,x,y] in [c1,' '];
if map[l,x,y]=c1 then begin
eat:=true;
repeat
dec(x,dx[d]);dec(y,dy[d]);map[l,x,y]:=c1;
until (x=i) and (y=j);
end;
end;
end;
if eat then begin
pass:=false;
if l=n then update else search(l+1,c2,c1);
end;
end;
if pass then begin
map[l]:=map[l-1];
if l=n then update else search(l+1,c2,c1);
end;
end;
begin
fillchar(map,sizeof(map),' ');
read(t);
for u:=1 to t do begin
readln(n);
for i:=1 to 8 do begin
for j:=1 to 8 do
read(map[0,i,j]);
readln;
end;
ans:=-99;
if n=0 then update else search(1,'B','W');
writeln(ans);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -