Trở về đầu
Mời các bạn Download code tại: Click here
Đề bài: Nhập vào một số nguyên dương n. Hãy liêt kê các hoán vị của các số từ 1 tới n.
const fi = 'HOANVI.INP';
fo = 'HOANVI.OUT';
MAXN = 20;
var f: text;
n: integer;
a: array [1..MAXN] of integer;
b: array [1..MAXN] of boolean;
dem: integer;
procedure Nhap;
begin
assign(f, fi); reset(f);
readln(f, n);
close(f);
fillchar(b, sizeof(b), true);
dem:= 0;
end;
procedure InKQ;
var i: integer;
begin
inc(dem);
write(f, dem:3, ': ');
for i:= 1 to n do
write(f, a[i],' ');
writeln(f);
end;
procedure Try2(i: integer); // dien gia tri cho vi tri thu i
var j: integer;
begin
for j:= 1 to n do
begin
if b[j] = true then
begin
a[i]:= j;
b[j]:= false;
if i = n then InKQ
else Try2(i+1);
b[j]:= true;
end;
end;
end;
BEGIN
Nhap;
assign(f, fo); rewrite(f);
Try2(1);
close(f);
END.