Cod sursa(job #613577)

Utilizator KennedyKennedy Kennedy Data 30 septembrie 2011 19:51:23
Problema Generare de permutari Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.99 kb
Program permutari_n;
type stiva=array[0..15] of byte;
var f:text;
    n:byte;
    st:stiva;

Function succesor(var st:stiva;k:integer):boolean;
begin
    if st[k]<n then begin
                    st[k]:=st[k]+1;
                    succesor:=true;
                    end
               else succesor:=false;
end;

Function valid(var st:stiva;k:integer):boolean;
var i:integer;
    ev:boolean;
begin
     ev:=true;
     for i:=1 to k-1 do if st[k]=st[i] then ev:=false;
     valid:=ev;
end;

Procedure back(k:byte);
var j:byte;
begin
     if k=n+1 then begin
                   for j:=1 to n do write(f,st[j],' ');
                   writeln(f);
                   end
              else begin
                   st[k]:=0;
                   while succesor(st,k) do if valid(st,k) then back(k+1);
                   end;
end;

begin
     assign(f,'permutari.in'); reset(f); read(f,n); close(f);
     assign(f,'permutari.out'); rewrite(f);
     back(1);
     close(f);
end.