10.05.2017

Xếp hậu trên bàn cờ

 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