Cod sursa(job #1153895)

Utilizator azkabancont-vechi azkaban Data 25 martie 2014 20:19:27
Problema Generare de permutari Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.67 kb
program permutari;
  var st:array[1..9] of integer;
  i,n,p:integer;

procedure init;
 begin
      readln(n);
      for i:=1 to 9 do st[i]:=0;
  end;

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

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

procedure back(p:integer);
    begin
         p:=1; //plecam de la primul nivel }
         st[p]:=0; //initializam nivelul cu 0}
         while p>0 do  {cat timp stiva nu este vida}
                     begin
                        if st[p]<n then {mai exista valori neincercate pe nivelul p}
                                       begin
                                            st[p]:=st[p]+1; {st[p]<-<o noua valoare din multimea valorilor posibile>}
                                            if valid(p) then
                                                     if p=n then tipar {solutia este finala}
                                                            else begin
                                                                       p:=p+1; {trecem la nivelul urmator}
                                                                       st[p]:=0; {initializam valoarea de pe nivel cu 0}
                                                                  end;
                                         end
                                   else p:=p-1; {pas inapoi}
                  end;
     end;
begin
      assign(input,'permutari.in'); reset(input);
      assign(output,'permutari.out'); rewrite(output);
      init;
      back(1);
      close(output);
end.