根据上一个排列产生下一个排列. 程序如下: program pailei;
const m=5;
var a:array[1..m] of integer ;
i,j,temp,k,l:integer;
procedure print;
var i:integer;
begin
for i:=1 to m do
write(a);
writeln;
end;
begin
for i:=1 to m do a:=i;
repeat
print;
i:=m-1;
while (i>0) and (a>a[i+1]) do i:=i-1;
if i>0 then
begin
j:=m;
while a[j]<a do j:=j-1;
temp:=a;a:=a[j];a[j]:=temp;
k:=i+1;l:=m;
while k<l do
begin
temp:=a[k];a[k]:=a[l];a[l]:=temp;
k:=k+1;l:=l-1
end;
end;
until i=0;
end.
|