讨论 / 求解啊 哪里错了?
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
回复 删除
- -

初学者 学到深搜- -

mdx mdy是马的方向

zdx zdy是卒的方向

ans是走得通的条数 也就是最终结果

哪里错了?

#2 Nostalk@2012-12-14 19:44:00
回复 删除
0 - 怎木人

查看更多回复
提交回复