⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac1043.pas

📁 同济大学 Online在线题库 AC源代码合集 程序设计竞赛必看资料
💻 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 + -