Pagini recente » Cod sursa (job #1314567) | Cod sursa (job #259263) | Cod sursa (job #724496) | Cod sursa (job #2847672) | Cod sursa (job #249157)
Cod sursa(job #249157)
program permutari;
type stiva=array[1..100] of integer;
var st:stiva;
n,k:integer;
as,ev:boolean;
f,g:text;
procedure init (k:integer;var st:stiva);
begin
st[k]:=0;
end;
procedure succesor (var as: boolean; var st: stiva; k:integer);
begin
if st[k]<n then
begin
st[k]:=st[k]+1;
as:=true;
end
else as:=false
end;
procedure valid (var ev:boolean; st:stiva; k:integer);
var i:integer;
begin
ev:=true;
for i:=1 to k-1 do if st[k]=st[i] then ev:=false
end;
function solutie(k:integer):boolean;
begin
solutie:=(k=n)
end;
procedure tipar;
var i:integer;
begin
for i:=1 to n do write (g,st[i],' ');
writeln(g);
end;
Begin
assign(f,'permutari.in');
reset(f);
assign(g,'permutari.out');
rewrite(g);
read(f,n);
{write ('n='); readln(n);}
k:=1; init (k,st);
while (k>0) do
begin
repeat
succesor (as, st, k);
if as then valid (ev,st,k);
until (not as) or (as and ev);
if as then
if solutie (k) then tipar
else begin
k:=k+1;
init (k,st)
end
else k:=k-1
end;
close(f);
close(g);
{readln;}
End.