讨论 / PID564 mty宝藏 PASCAL 题解
Sentinel Prome 2015-07-05 23:54:13
点我顶贴 收藏 删除
方法一:深搜

const dx:array[0..4]of longint=(100,0,0,1,-1);

dy:Array[0..4]of longint=(100,1,-1,0,0);

var a,mark:array[0..1000,0..1000]of integer;

i,j,xx,yy,n,k:longint;

b:boolean;

procedure work(x,y,l:longint);

begin

for k:=1 to 4 do

if (dx[k]+dx[l]<>0)and(dy[k]+dy[l]<>0)or(l=0)then

begin

xx:=x+dx[k]; yy:=y+dy[k];

if(x+dx[k]>=1)and(x+dx[k]<=n)and(y+dy[k]>=1)and(y+dy[k]<=n)and(a[x+dx[k],y+dy[k]]=0)then

begin

if mark[xx,yy]=1 then

begin

b:=true;

end

else

begin

mark[xx,yy]:=1;

work(xx,yy,k);

end;

end

else

mark[x+dx[k],y+dy[k]]:=0;

end;

end;

begin

readln(n);

b:=false;

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

for i:=1 to n do

for j:=1 to n do

if (a[i,j]=0)and(mark[i,j]=0) then work(i,j,0);

if b=true then writeln('Y') else writeln('N');

end.

方法二:bug

begin

writeln('Y');

end.

查看更多回复
提交回复