不是VIP会员,不能显示答案

题目解答

题目:
第2题: 波波爱积木
波波有一款新式积木,每个积木上都有一个数,一天波波突发奇想,要是把所有的积木排成一排,所形成的数字串最大是多少呢?
不懂编程的波波找到了你,你的任务就是读入n个数字积木,求出所能形成的最大数。
【输入说明】
第i行是一个整数n(n≤1000),接下来n行每行是一个正整数。
【输出说明】
所能形成的最大整数。
【样例输入】
3
13
131
343
【祥例输出】
34313131
【程序清单】
const maxn=1005;
var a:array[0.. maxn] of string[205];
    n:longint; 
procedure init; 
  var i:longint; 
    begin
     readln(n);
     for i:=1 to n do readln(a[i]); 
    end;
procedure qsort(L, R:longint); 
  var i,j:longint; 
    mid:string; 
begin
   i:=L;j:=R;mid:=a[(L+R) div 2]; 
  repeat
    while (i<R)and( a[i]+mid>mid+a[i] ) do inc(i);
    while (j>L)and( a[j]+mid<mid+a[j] ) do dec(j);
    if  i<=j  then begin
    	a[0] :=a[i] ;a[i] :=a[j] ;a[j] :=a[0]; 
    	inc(i);
    	 dec(j)  ;
    end;
  until i>j;
  if i<R then qsort(i, R); 
  if j>L then qsort(L, j); 
end;
procedure print; 
var i:longint; 
  begin
   for i:=1 to n do write(a[i]); 
  end; 
begin 
  init;
   qsort(1,n);
  print;
end.
考点: 0
分析: 含有贪心的快排
解答: 如果用字符串ASCII排序结果如下
343 131 13
而结果将13 排在 131前面,要看拼接后的大小
因为13113小于13131
评论: 用字符串进行比较,是此题关键
老师: 0