[r]
(1)Bài 32/2000 - Bài toán hậu
(Dành cho học sinh Tiểu học)
Có nhiều cách xếp Sau vài cách để bạn tham khảo: 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Để tìm hết nghiệm phải sử dụng thuật toán Đệ quy - Quay lui Sau chương trình, chạy 92 nghiệm ghi kết quả file HAU.OUT.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+} {$M 16384,0,655360}
uses crt;
const fo = 'hau.out'; n = 8;
var A : array[1 n,1 n] of byte; c : array[1 n] of byte; dc1 : array[2 2*n] of byte; dc2 : array[1-n n-1] of byte; sn : integer;
(2)var i,j : byte; begin
inc(sn);
writeln(f,'Nghiem thu ',sn,' la :'); for i := to n
begin
for j := to n write(f,A[i,j],#32); writeln(f);
end; writeln(f); end;
procedure vet(i : byte); var j : byte; begin
if i = n+1 then begin
ghino; exit; end;
for j := to n
if (c[j] =0)and(dc1[i+j]=0) and (dc2[i-j]=0) then begin
A[i,j] := 1; c[j] := 1; dc1[i+j] :=1 ; dc2[i-j] := 1; vet(i+1);
A[i,j] := 0; c[j] := 0; dc1[i+j] :=0 ; dc2[i-j] := 0; end;
end; BEGIN