Cod sursa(job #145310)

Utilizator hitmannCiocas Radu hitmann Data 28 februarie 2008 18:30:34
Problema Generare de permutari Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.87 kb
program permutari;
var st:array[1..20]of integer;
    k,n,i:integer;
    g:text;
    as,ev:boolean;
procedure citire;
var f:text;
begin
assign(f,'permutari.in');reset(f);
read(f,n);
close(f);
end;
procedure succesor;
begin
if st[k]<n then
               begin
               inc(st[k]);
               as:=true;
               end
             else as:=false;
end;
procedure valid;
begin
ev:=true;
if k>=2 then for i:=1 to k-1 do if st[i]=st[k] then ev:=false;
end;
begin {pp}
citire;
assign(g,'permutari.out'); rewrite(g);
k:=1;
while k>0 do
begin
repeat
succesor;
 if as then valid;
 until not as or (as and ev);
 if as then if k=n then begin
                    for i:=1 to n do write(g,st[i],' ');
                    writeln(g);
                    end
                   else begin inc(K); st[k]:=0; end
       else dec(k);
end;
close(g);
end.