1. 程式人生 > >貪心 最大整數(源自NOIP1998連線多位數)

貪心 最大整數(源自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
這就是利用自身來排序的精髓。

啊哈!