一道简单的PASCAL 编程

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:27:02
现在有一个20位以内的自然数,你可以将组成这个数的各位数字重新排列,得到一个数值为最小的新数,但新数的位数保持不变.请编程打印出重新排列后的新数.
请尽量用上 集合
实在不行用其它也行

const
maxn=20;

var
f:array[0..9]of longint;
tmp,i:longint;

begin
fillchar(f,sizeof(f),0);
for i:=1 to maxn do begin
read(tmp);
inc(f[tmp]);
end;
readln;
for i:=1 to 9 do
if f[i]<>0 then begin
write(i);
dec(f[i]);
break;
end;
for i:=0 to 9 do
while f[i]<>0 do begin
write(i);
dec(f[i]);
end;
writeln;
end.
//别说是20位了,20亿位都没问题

可能有一点错误,自己改正
program ch;
var
a:array[1..20] of integer;
i,j,k:integer
begin
for i:=1 to 20 do
read(a[i])
for i:=1 to 20 do
for j:=i+1 to 19 do
begin
if a[i]>a[j]
then begin k:=a[i];a[i]:=a[j];a[j]:=l;end;
end;
for i:=1 to 20 do
write(a[i]);
writeln;
end.

var s:string;t:char;
i,j:integer;
be