根据上一个排列产生下一个排列

[复制链接]
发表于 2023-12-30 09:46:07 | 显示全部楼层 |阅读模式
根据上一个排列产生下一个排列.
程序如下:
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.


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表