Đọc trên mạng thì em thấy có thuật toán mã đi tuần, xem code thì em thấy khá dài, em biến tấu một chút theo ý mình thì em thấy nó chạy hình như không bao giờ dừng, em nghĩ mãi mà không biết đã sai chỗ nào ạ!!!
program gin;
uses crt;
const
h : array[1..8] of Integer = (2, 1, -1, -2, -2, -1, 1, 2);
c : array[1..8] of Integer = (1, 2, 2, 1, -1, -2, -2, -1);
var
t, i, j, cot, hang : Integer;
a : array[1..100, 1..100] of Integer;
kt : array[-2..11, -2..11] of Boolean;
procedure print;
var
i : Integer;
begin
for i := 1 to 8 do
begin
for j := 1 to 8 do write(a[i, j],' ');
writeln;
end;
halt;
end;
procedure try(i, j : Integer);
var
g : Integer;
begin
a[i, j] := t;
// writeln(t);
if t = 64 then print
else
for g := 1 to 8 do if kt[i + h[g], j+ c[g]] then
begin
kt[i, j] := false;
inc(t);
try(i + h[g], j + c[g]);
kt[i, j] := true;
dec(t);
end;
end;
begin
write('Nhap toa do : ');
read(hang, cot);
t := 1;
for i:= low(kt) to high(kt) do
for j := low(kt[i]) to high(kt[i]) do
kt[i, j] := false;
for i:=1 to 8 do
for j:=1 to 8 do
kt[i, j] := true;
try(hang, cot);
end.