题意
给出n(n<=20)个很大的数,输出最大的一个和它的编号。
题解
数据太大,可以用字符串数组来储存输入的n个数。注意Pascal字符串直接比较大小无法得出正确结果,可以用c[i]来放每个数的长度,以长度为第一关键字,字符串为第二关键字,进行排序。
排序可以用快排、冒泡等都可以。
时间复杂度O(n*n) 反正n很小
代码
var
n,i,j:longint;
a:array[0..20]of string;
b,c:array[0..20]of longint;
begin
readln(n);
for i:=1 to n do
begin
b[i]:=i;
readln(a[i]);
c[i]:=length(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (c[i]<c[j])or((a[i]<a[j])and(c[i]=c[j])) then
begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
b[0]:=b[i];
b[i]:=b[j];
b[j]:=b[0];
c[0]:=c[i];
c[i]:=c[j];
c[j]:=c[0];
end;
writeln(b[1]);
writeln(a[1]);
end.