题目链接
题目梗概
给出若干多位数(位数不定),排列组合这些多位数可以得到多个大数,请输出其中最大的一个。
解题思路
这道题并不需要组合出所有的数,然后排序输出最大的。
我们可以结合此题的样例考虑,怎么样才能组合出最大的数,显然是字典序大的放在前面。
字典序就是指字典中排序的规则,它首先比较的是首字母(数字),大者优先,比如b > acd 是因为首字母b大于首字母a。如果首字母相同,就比较第二个字母(数字),比如bc > ba是因为第二个字母c大于第二个字母a。之后依次类推。另外比的就是长度,前缀相同的情况下,长度长的大,比如abcd > abc。
比如(7和32),字典序中7>32。所以最大的数是732,而不是327。
但单单只比较字典序是不够的,比如虽然321 > 32,但显然32321要大于32132。因此我们考虑不比较组合前的字典序,而直接比较组合后的字典序。
完整代码
#include <iostream>