Cod sursa(job #37066)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 24 martie 2007 16:12:45
Problema Dame Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.17 kb
program problema_damelor;
var as,ev:boolean;
    n,k,i:integer;
    st:array[1..1000] of integer;
    f,g:text;
procedure init;
begin
st[k]:=0;
end;
procedure succesor;
begin
if st[k]<n then begin
  st[k]:=st[k]+1;
  as:=true;
end
           else as:=false;
end;
procedure valid;
begin
ev:=true;
for i:=1 to k-1 do begin
  if st[k]=st[i] then ev:=false;
  if abs(k-i)=abs(st[k]-st[i]) then ev:=false;
end;
end;
function solutie(k:integer):boolean;
begin
if k=n then solutie:=true
       else solutie:=false;
end;
procedure tipar;
begin
writeln(g,n);
for i:=1 to n do begin
  write(g,i,' ',st[i],' ');
  writeln(g);
end;
end;
begin
assign(f,'dame.in'); reset(f);
assign(g,'dame.out'); rewrite(g);
read(f,n);
k:=1;
init;
while k>0 do begin
  repeat
    succesor;
    if as then valid;
  until (not as) or (as and ev);
  if as then if solutie(k) then begin
                             tipar;
                             break;
                           end
                           else begin
                             k:=k+1;
                             init;
                           end
        else k:=k-1;
end;
close(g);
end.