题目
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
题解
把n个整数转换为字符串//str(x,s)x为整数//,然后从大到小,最后从大到小输出。
排序时要注意,要像这样比较:
a[i]+a[j]<a[j]+a[i]
例 12301 和 123
若直接比较他们的字典序是一样的,但是
12312301很明显要比12301123大
时间复杂度O(n*n)
代码
var
s:ansistring;
a:array[0..20]of string;
n,i,j:longint;
begin
readln(n);
for i:=1 to n do
begin
read(j);
str(j,a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]+a[j]<a[j]+a[i] then
begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
end;
for i:=1 to n do
s:=s+a[i];
writeln(s);
end.