烨毅 2011-07-07 22:53:00
点我顶贴
收藏
删除
最后一个测试数据没有问题,只是大家忽略了一种情况:
3
741 74 5
像这种情况,'741'明显大于'74',在排序的时候这里就会出现错误,原本最大的应是:747415,而忽略这点,直接排序的结果是:741745.
希望这对大家有所帮助!
下面是AC的代码:
var i,j,n:longint;
a:array[0..100] of longint;
b:array[0..100] of string;
m,t1,t2:string;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do str(a[i],b[i]);
for i:=1 to n do
for j:=1 to n do
if (b[i]>b[j]) then
begin
if (pos(b[j],b[i])<>0) then
begin
t1:=b[i]+b[j]; t2:=b[j]+b[i];
if (t1>t2) then begin m:=b[i]; b[i]:=b[j]; b[j]:=m; end;
end
else begin m:=b[i]; b[i]:=b[j]; b[j]:=m; end;
end;
for i:=1 to n do write(b[i]);
end.