1004四子连棋{摘自 兰多夫}

本文深入探讨了游戏开发领域的关键技术,包括游戏引擎、编程语言、硬件优化等,并重点阐述了AI音视频处理的应用场景和实现方法,如语义识别、语音识别、AR特效等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const
  fx:array[1..4]of longint=(1,0,-1,0);
  fy:array[1..4]of longint=(0,1,0,-1);
var
  map:array[0..5,0..5]of char;
  ans,a,b,c,d:longint;
procedure init;
var
  i,j:longint;
  sss:char;
begin
  for i:=1 to 4 do
    for j:=1 to 4 do
     begin
       read(sss);
       while(sss<>'B')and(sss<>'W')and(sss<>'O')do
         read(sss);
       map[i,j]:=sss;
       if sss='O' then
       begin
         if a=0 then begin a:=i; b:=j;end
         else begin c:=i; d:=j;end;
       end;
     end;
end;
function flag:boolean;
var
  i:longint;
begin
  for i:=1 to 4 do
    begin
      if(map[1,i]=map[2,i])and(map[2,i]=map[3,i])and(map[3,i]=map[4,i])then exit(true);
      if(map[i,1]=map[i,2])and(map[i,2]=map[i,3])and(map[i,3]=map[i,4])then exit(true);
    end;
  if(map[1,1]=map[2,2])and(map[2,2]=map[3,3])and(map[3,3]=map[4,4])then exit(true);
  if(map[1,4]=map[2,3])and(map[2,3]=map[3,2])and(map[3,2]=map[4,1])then exit(true);
  exit(false);
end;
procedure try(now,x,x1,y1,x2,y2:longint);{状态设计得很好}
var
  i:longint;
begin
  if x>=ans then exit;
  if flag then begin ans:=x; exit; end;
  if (now and 1)=1 then//hei
  begin
    for i:=1 to 4 do
      ifmap[x1+fx[i],y1+fy[i]]='B' then
     begin
       map[x1+fx[i],y1+fy[i]]:='O';
       map[x1,y1]:='B';
       try(1-now,x+1,x1+fx[i],y1+fy[i],x2,y2);{这样设置相当妙}
       map[x1+fx[i],y1+fy[i]]:='B';
       map[x1,y1]:='O';
     end;
    for i:=1 to 4 do
      ifmap[x2+fx[i],y2+fy[i]]='B' then
     begin
       map[x2+fx[i],y2+fy[i]]:='O';
       map[x2,y2]:='B';
       try(1-now,x+1,x1,y1,x2+fx[i],y2+fy[i]);
       map[x2+fx[i],y2+fy[i]]:='B';
       map[x2,y2]:='O';
     end;
  end;
  if (now and 1)=0 then//bai
  begin
    for i:=1 to 4 do
      ifmap[x1+fx[i],y1+fy[i]]='W' then
     begin
       map[x1+fx[i],y1+fy[i]]:='O';
       map[x1,y1]:='W';
       try(1-now,x+1,x1+fx[i],y1+fy[i],x2,y2);
       map[x1+fx[i],y1+fy[i]]:='W';
       map[x1,y1]:='O';
     end;
    for i:=1 to 4 do
      ifmap[x2+fx[i],y2+fy[i]]='W' then
     begin
       map[x2+fx[i],y2+fy[i]]:='O';
       map[x2,y2]:='W';
       try(1-now,x+1,x1,y1,x2+fx[i],y2+fy[i]);
       map[x2+fx[i],y2+fy[i]]:='W';
       map[x2,y2]:='O';
     end;
  end;
end;
begin
  init;
  ans:=5;
  try(0,0,a,b,c,d);
  try(1,0,a,b,c,d);
  write(ans);
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值