Cod sursa(job #863839)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 24 ianuarie 2013 10:12:25
Problema Dame Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.32 kb
program damele;
type stiva=array[1..100]of integer;
var st:stiva;
    n,k:integer;
    as,ev:boolean;
    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
                inc(st[k]);
                as:=true;
                end

           else as:=false;
end;
procedure valid(var ev:boolean;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 write(g,st[i],' ');
writeln(g);
end;
begin
assign(f,'dame.in');reset(f);
assign(g,'dame.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
                                          inc(k);
                                          init(k,st);
                                          end
                  else dec(k);
            end;


close(f);close(g);
end.