骑士游历问题求助
pascal吧
全部回复
仅看楼主
level 1
以下是我改编5*5棋盘的程序,不知为什么,输入5以上数字会卡住,求指导!
const u:array[1..8] of integer=(1,2,2,1,-1,-2,-2,-1);
v:array[1..8] of integer=(-2,-1,1,2,2,1,-1,-2);
var a:array[1..100,1..100] of integer;
b:array[1..100,1..100] of boolean;
i,j,num,sz:longint;
procedure search(i,j,n:integer);
var k,x,y:longint;
begin
if n>sz*sz then begin num:=num+1;exit;end;
for k:=1 to 8 do
begin
x:=i+u[k]; y:=j+v[k];
if(x<=sz)and(x>=1)and(y<=sz)and(y>=1)and b[x,y]then
begin
b[x,y]:=false;
a[x,y]:=n;
search(x,y,n+1);
b[x,y]:=true;
a[x,y]:=0;
end;
end;
end;
begin
readln(sz);
for i:=1 to sz do
for j:=1 to sz do
begin
a[i,j]:=0;
b[i,j]:=true;
end;
a[1,1]:=1; b[1,1]:=false;
search(1,1,2);
writeln(num);
end.
2014年04月02日 12点04分 1
level 11
可能是超时了
2014年04月03日 16点04分 2
1