贪心 最大整数(源自NOIP1998连接多位数)

SSL 1078
洛谷 P1107 最大整数
题目描述
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

var
  s,i,n,j:longint;
  t:string;
  a:array[1..100]of string;
begin
  readln(n);
  for i:=1 to n do
   begin
     read(s);
     str(s,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
       t:=a[i];a[i]:=a[j];a[j]:=t;
     end;
  for i:=1 to n do
   write(a[i]);
end.

重点在排序阶段,要判断,是这个字符串加上之前的字符串大,还是另一个字符串加上之前的字符串大,很难,但可以用它们自身来排序:
1和10
110>101
这就是利用自身来排序的精髓。

啊哈!

你可能感兴趣的:(贪心 最大整数(源自NOIP1998连接多位数))