Перестановки

За заданим натуральним числом N вивести усі перестановки з цілих чисел від 1 до N у лексикографічному порядку.
Вхідні дані
Вводиться натуральне число N (1  N  8).
Вихідні дані
Потрібно вивести кожну перестановку у окремому рядку.


Вхідні дані
3
 
 
 
 
 
Вихідні дані
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1



program sdffsd;
uses crt;
var n,i,f,k,m : byte;
a : array [1..255] of byte;
procedure print;
begin
for i:=1 to n do write (a[i],' ');
end;
BEGIN
clrscr;
readln (n);
for i:=1 to n do a[i]:=i;
f:=1;
while f=1 do begin
for i:=1 to n do write (a[i],' '); writeln;
i:=n; k:=0;
while (k=0) and (i>1) do begin if a[i-1]<a[i] then k:=i-1;
i:=i-1;
end;
if k>0 then begin
i:=n; m:=0;
while m = 0 do begin
if a[k]<a[i] then m:=i;
i:=i-1;
end;
i:=a[k]; a[k]:=a[m]; a[m]:=i;
m:=1;
while (m<(n-k+1)/2) do begin
i:=a[k+m];
a[k+m]:=a[n+1-m];
a[n+1-m]:=i;
m:=m+1;
end;
end else f:=0;
end;

END.

Немає коментарів:

Дописати коментар