貪心 最大整數(源自NOIP1998連線多位數)
阿新 • • 發佈:2019-02-15
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
這就是利用自身來排序的精髓。
啊哈!