贪心 最大整数(源自NOIP1998连接多位数)

本博客探讨如何使用贪心策略将不超过20个正整数连接成最大的多位数。通过比较数字自身来排序,例如110大于101,揭示了这种方法的核心思想。

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
这就是利用自身来排序的精髓。

啊哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值