Nostalk 2012-12-14 19:44:00
点我顶贴
收藏
删除
const mdx:array[1..8]of longint=(1,2,2,1,-1,-2,-2,-1);
mdy:array[1..8]of longint=(2,1,-1,-2,2,1,-1,-2);
zdx:array[1..3]of longint=(0,0,1);
zdy:array[1..3]of longint=(1,-1,0);
var i,j,m,n,k,l,x1,x2,y1,y2,ans,m1,n1:longint;
a:array[0..10000,0..10000]of longint;
f:array[0..10000,0..10000]of boolean;
procedure dfs(x,y:longint);
var i,j:longint;
begin
if (x=x1)and(y=y1) then begin
inc(ans);
exit;
end;
for i:=1 to 3 do
begin
m:=x+zdx[i];
n:=y+zdy[i];
if (m>0)and(m<=8)and(n<0)and(n<=4) then
for j:=1 to 8 do
begin
m1:=x2+mdx[j];
n1:=y2+mdx[j];
if (a[m,n]<>a[m1,n1])and(f[m,n]=false)then
begin
f[m,n]:=true;
dfs(m,n);
f[m,n]:=false;
end;
end;
end;
end;
begin
read(x1,y1,x2,y2);
dfs(1,1);
write(ans);
end.
#1 Nostalk@2012-12-14 00:47:00
29085
回复
删除
- -
初学者 学到深搜- -
mdx mdy是马的方向
zdx zdy是卒的方向
ans是走得通的条数 也就是最终结果
哪里错了?