Viết chương trình để tìm các phương án đặt n quân hậu trên bàn cờ vua (ma trận nxn) sao cho các quân hậu không ăn được nhau.
Giải
const max = 8;
Var
n,k:integer; x: array[1..max] of integer; a: array[1..max] of boolean; b: array[2..2*max] of boolean; c: array[1-max..max-1] of boolean;
Procedure Print;
BEGIN For k:=1 to max do Write('(',k,';',x[k],'); '); writeln; End;
Procedure Quaylui(i:integer);
Var j:integer;
BEGIN
For j:=1 to max do if a[j] and b[i+j] and c[i-j] then
BEGIN
x[i]:=j; If i = Max Then BEGIN Print ; n:=n+1; End
Else
BEGIN a[j]:=false; b[i+j]:=false; c[i-j]:=false; Quaylui(i+1); a[j]:=true; b[i+j]:=true; c[i-j]:=true;
end; end; End;
BEGIN
Fillchar(a,sizeof(a),true); Fillchar(b,sizeof(b),true);Fillchar(c,sizeof(c),true);
Quaylui(1);
Writeln(n);
Readln;
END.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét