Cod sursa(job #743896)

Utilizator RadioactivMihai Preguza Radioactiv Data 6 mai 2012 18:49:19
Problema Generare de permutari Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1 kb
var st:array[1..8] of byte;
    n,k:byte;
    as,ev:boolean;




procedure succesor(var as:boolean; k:integer);
begin
  if st[k]<n then
    begin
       inc(st[k]);
       as:=true
    end
    else
       as:=false
End;

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


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


BEGIN
assign(input,'permutari.in');
reset(input);
readln(n);
close(input);
assign(output,'permutari.out');
rewrite(output);
k:=1;
st[k]:=0;
while k>0 do
  begin
    repeat
      succesor(as,k);
      if as
        then
          valid(ev,k);
    until (not as) or (as and ev);
    if as
      then
        if k=n
          then
            tipar
          else
            begin
              inc(k);
              st[k]:=0
            end
      else
        dec(k)
  end;
close(output);
END.