free pascal 全排列

来源:百度知道 编辑:UC知道 时间:2024/06/02 12:58:17
跪求!【问题描述】
输出1,2,...,n (1<=n<=12)所有不重复的排列,即n的全排列。要求产生的任一数字序列中不允许出现重复的数字。

这是我写的,希望能帮助你:
var
a:array[1..9]of boolean;
b:array[1..9]of integer;
n,i,j:integer;
procedure try(i:integer);
var
j:integer;
begin
if i=n+1 then begin writeln;for j:=1 to n do write(b[j],' '); end;
for j:=1 to n do
if a[j] then
begin
a[j]:=false;
b[i]:=j;
try(i+1);
a[j]:=true;
end;
end;
begin
fillchar(a,sizeof(a),true);
fillchar(b,sizeof(b),0);
read(n);
try(1);
end.
都对,要加分哦~
O(∩_∩)O~

var
n,i,j:integer;
a:array[1..100]of integer;
b:array[1..100]of boolean;
procedure print;
var i:integer;
begin
for i:=1 to n do write(a[i],' ');
writeln;
end;
procedure try(d:integer);
var k:integer;
begin
if d=n+1 then print
else
for k:=1 to n do
if b[k]=true then
begin
a[d]:=k; b[