program dkf;
var h:array[-1..7,-1..7] 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 5 do
begin
for j:=1 to 5 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<25 then try(u,v,i+1)
else print;
h[u,v]:=0;
end;
end;
end;
begin
for i:=-1 to 7 do
for j:=-1 to 7 do
if (i>=1) and(i<=5)and(j>=1)and(j<=5)
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;
try(1,1,2);
writeln('num=',num);
end.
看不懂发消息给我
是这个:http://zhidao.baidu.com/question/59556178.html
program asdf;
var
fx:array[1..8,1..2]of integer;
a:array[1..5,1..5]of integer;
n,m:integer;
function judge:boolean;
var
i,j:integer;
begin
judge:=true;
for i:=1 to 5 do
for j:=1 to 5 do
if a[i,j]=0 then judge:=false;
end;
procedure try(x,y,z:integer);
var
i,j,k:integer;
begin
for i:=1 to 8 do
if (x+fx[i,1]>0)and(x+fx[i,1]<=5)and(y+fx[i,2]>0)and(y+fx[i,2]<=5) then
begin
if a[x+fx[i,1],y+fx[i,2]]=0 then
begin
a[x+fx[i,1],y+fx[i,2]]:=z+1;
if judge then
begin
for j:=1 to 5 do
begin
for k:=1 to 5 do
write(a[j,k]:3);
writeln;
end;
writeln;
end
else
try(x+fx[i,1],y+fx[i,2],z+1);
end;
end;
a[x,y]:=0;
end;
begin
readln(n,m);
fx[1,1]:=-2;fx[1,2]:=1;
fx[2,1]:=-1;fx[2,2]:=2;
fx[3,1]:=1;fx[3,2]:=2;
fx[4,1]:=2;fx[4,2]:=1;
fx[5,1]:=2;fx[5,2]:=-1;
fx[6,1]:=1;fx[6,2]:=-2;
fx[7,1]:=-1;fx[7,2]:=-2;
fx[8,1]:=-2;fx[8,2]:=-1;
a[n,m]:=1;
try(n,m,1);
end.
输入
n,m起始坐标
http://zhidao.baidu.com/question/59556178.html