首页 > 代码库 > 不错的题目-n个数连接得到的最大值
不错的题目-n个数连接得到的最大值
这道题目还是很不错的
《【字符串排序】n个数连接得到最小或最大的多位整数》
题目
描述:设有n个正整数,将它们依次连成在一排,组成一个多位数,现在要求可能组成的多位数中最大的多位数是什么?
例如:n=3时,3个整数13,312,343连成的最大多位数为:343-312-13。
例如:n=4时,4个证书7,13,4,246连成的最大多位数为:7-4-246-13。
输入:n个整数,EOF结尾。
输出:最大的多位数。
算法分析
不能直接用贪心。但是可以这样:
正确的贪心标准是:先把整数化成字符串,然后再比较a+b和b+a,如果a+b>b+a,就把a排在b的前面,反之则把a排在b的后面。
举例说明正常的字符串比较缺陷!如:A=’321’,B=’32’,按照标准的字符串比较规则因为A>B,所以A+B > B+A ,而实际上‘32132‘ < ‘32321‘。
所以,自定义一种字符串的比较规则:
如果A+B>B+A,则我们认为A>B。
且可以证明:如果A+B>=B+A,B+C>=C+B,则一定有:A+C>=C+A。
这样一来,程序就很简单了。分3步:
(1)先把n个数字转换成字符串存储;
(2)按照自定义的规则把n个字符串从大到小排序;
(3)依次输出这些字符串。
不错的题目-n个数连接得到的最大值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。