Cod sursa(job #414431)

Utilizator TamasionutzIoan-Cornel Tamas Tamasionutz Data 10 martie 2010 07:18:13
Problema Generare de permutari Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.05 kb
type vector=array[1..25] of integer;
var st:vector;
    n,k:integer;
    f:text;

procedure init(k:integer);
begin
     st[k]:=0;
end;

procedure afis;
var i:integer;
begin
     for i:=1 to n do write(f, st[i],' ');
     writeln(f);
end;

function succesor(k:integer):boolean;
begin
     if st[k]<n then
        begin
             Inc(st[k]); succesor:=true;
        end
     else succesor:=false;
end;

function solutie(k:integer):boolean;
begin
     solutie:=(k=n+1);
end;

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

procedure back(k:integer);
begin
     if solutie(k) then afis
     else
         begin
              init(k);
              while succesor(k) do
                    if valid(k) then
                       back(k+1);
         end;
end;

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