跳马 pascal

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:25:51
是9*9的格子跳马程序,输入一个点的坐标,在9*9格的棋盘上,从一点出发,按日字跳马,要求不重复地跳经所有方格。求出符合要求的所有跳马方案。,然后按一定路径把格子走完.

跪求!急!急!急!

program dkf;
var h:array[-20..70,-20..70] of integer;
a,b:array[1..8]of integer;
i,j,num:integer;
procedure print;
var i,j:integer;
begin
num:=num+1;
if num<=5 then begin
for i:=1 to 9 do
begin
for j:=1 to 9 do
write(h[i,j]:4);
writeln;
end;
writeln;
end;
end;
procedure try(x,y,i:integer);
var j,u,v:integer;
begin
for j:=1 to 8 do
begin
u:=x+a[j];
v:=y+b[j];
if h[u,v]=0 then begin
h[u,v]:=i;
if i<81 then try(u,v,i+1)
else print;
h[u,v]:=0;
end;
end;
end;
begin
for i:=-20 to 70 do
for j:=-20 to 70 do
if (i>=1) and(i<=9)and(j>=1)and(j<=9)
then h[i,j]:=0
else h[i,j]:=1;
a[1]:=2;b[1]:=1;
a[2]:=1;b[2]:=2;
a[3]:=-1;b[3]:=2;
a[4]:=-2;b[4]:=1;
a[5]:=-2;b[5]:=-1;
a[6]:=-1;b[6]:=-2;
a[7]:=1;b[7]:=-2;
a[8]:=2;b[8]:=-1;
num:=0;
h[1,1]:=1;