洛谷1781宇宙总统

题意

给出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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值