Cod sursa(job #683304)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 20 februarie 2012 14:02:21
Problema Dame Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.27 kb
program damele;
type stiva=array[1..100]of integer;
var st:stiva;
    i,j,n,k:integer;
    as,ev:boolean;
    a:array[1..20,1..20]of integer;
    f,g:text;
procedure init(k:integer;var st:stiva);
    begin
    st[k]:=0;
    end;
procedure succesor(var as:boolean;var st:stiva;k:integer);
    begin
    if st[k]<n then begin
                    st[k]:=st[k]+1;
                    as:=true;
                    end
    else as:=false;
    end;
procedure valid(var ev:boolean;var st:stiva;k:integer);
    var i:integer;
    begin
    ev:=true;
    for i:=1 to k-1 do
       if (st[k]=st[i])or (abs(st[k]-st[i])=abs(k-i)) then ev:=false ;
    end;
function solutie(k:integer):boolean;
    begin
    solutie:=(k=n);
    end;
procedure tipar;
  var i:integer;
  begin
  for i:=1 to n do writeln(g,'nodul=',st[i]);
  writeln(g);
  end;
begin
assign(f,'dam.in');reset(f);
assign(g,'dam.out');rewrite(g);
readln(f,n);
k:=1;
init(k,st);
while k>0 do
   begin
   repeat succesor(as,st,k);
   if as then valid(ev,st,k);
   until (not as) or (as and ev);
   if as then
             if solutie(k) then tipar
             else begin
                  k:=k+1;
                  init(k,st);
                  end
   else k:=k-1;
   end;
   close(f);close(g);
end.