Cod sursa(job #1600034)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 14 februarie 2016 17:09:20
Problema Generare de permutari Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.97 kb
var v:array[1..8] of byte;
    n:byte;

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

 function solutie(k:byte):boolean;
   begin
       if k=n then solutie:=true
       else solutie:=false;
   end;

 procedure afisare(k:byte);
 var i:byte;
   begin
        for i:=1 to k do write(output,v[i],' ');
        writeln(output);
   end;

 procedure backtrack(k:byte);
 var i:byte;
   begin
       for i:=1 to n do
         begin
             v[k]:=i;
             if valid(k)=true then
               begin
                  if solutie(k)=true then afisare(k)
                  else backtrack(k+1);
               end;
         end;
   end;

 Begin
  // assign(input,'permutari.in');  reset(input);
 //  assign(output,'permutari.out'); rewrite(output);
   readln(input,n);
   backtrack(1);
   close(input);
   close(output);
 end.