pascal全排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 01:59:25

var i,k,n:integer;
x:array[1..10] of integer;
st:string;
t:string;
procedure input;
var i:integer;
begin
readln(st);
t:=st;
n:=length(t);
end;
function place(k:integer):boolean;
var i:integer;
begin
place:=true;
for i:=1 to k-1 do
if x[i]=x[k] then
begin place:=false; break end ;
end;
procedure print;
var i:integer;
begin
for i:=1 to n do write(t[x[i]]);
writeln;
end;
begin
input;
k:=1;x[k]:=0;
while k>0 do
begin
x[k]:=x[k]+1;
while (x[k]<=n) and (not place(k)) do x[k]:=x[k]+1;
if x[k]>n then k:=k-1
else if k=n then print
else begin k:=k+1;x[k]:=0 end
end ;
end.