标签:字符串的比较 post 字符串 连接 输出 标准 简单 不能 依次
这道题目还是很不错的
描述:设有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)依次输出这些字符串。
标签:字符串的比较 post 字符串 连接 输出 标准 简单 不能 依次
原文地址:http://www.cnblogs.com/charlesblc/p/6329714.html