P1012 拼数

该博客介绍了P1012拼数问题,提供了最大数的生成策略。通过分析字典序,指出在组合多位数时,应将较大的数置于前面。博主分享了不需要所有组合,只需比较最终组合后的字典序,以解决如何找到最大的多位数。文章附有解题思路和完整代码示例。
摘要由CSDN通过智能技术生成

题目链接

P1012 拼数

题目梗概

给出若干多位数(位数不定),排列组合这些多位数可以得到多个大数,请输出其中最大的一个。

解题思路

这道题并不需要组合出所有的数,然后排序输出最大的。
我们可以结合此题的样例考虑,怎么样才能组合出最大的数,显然是字典序大的放在前面。
字典序就是指字典中排序的规则,它首先比较的是首字母(数字),大者优先,比如b > acd 是因为首字母b大于首字母a。如果首字母相同,就比较第二个字母(数字),比如bc > ba是因为第二个字母c大于第二个字母a。之后依次类推。另外比的就是长度,前缀相同的情况下,长度长的大,比如abcd > abc。
比如(7和32),字典序中7>32。所以最大的数是732,而不是327。
但单单只比较字典序是不够的,比如虽然321 > 32,但显然32321要大于32132。因此我们考虑不比较组合前的字典序,而直接比较组合后的字典序。

完整代码

#include <iostream>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值