@Moritz
2019-03-30T03:36:09.000000Z
字数 783
阅读 502
洛谷
字符串
C++
所有文稿
设有个正整数,将它们联接成一排,组成一个最大的多位整数。
例如:时,3个整数联接成的最大整数为:
又如:时,4个整数联接成的最大整数为:
输入格式:
第一行,一个正整数。
第二行,个正整数。
输出格式:
一个正整数,表示最大的整数
输入样例#1
3
13 312 343
输出样例#1
34331213
排序,然后输出,但存在一种特殊情况,不能直接用>
,所以写了一个函数
/*可以判断长度后交换以简化*/
bool sort2(string s1,string s2){
if (s1.length()<s2.length()){
if(s2.compare(0,s1.length(),s1)==0){
for(int i=s1.length();i<s2.length();i++){
if (s1[i-s1.length()]>s2[i]) return true;
else return false;
}
}
else return (bool)(s1>s2);
}
else if (s1.length()>s2.length()){
if(s1.compare(0,s2.length(),s2)==0){
for(int i=s2.length();i<s1.length();i++){
if (s2[i-s2.length()]>s1[i]) return false;
else return true;
}
}
else return (bool)(s1>s2);
}
else return (bool)(s1>s2);
return true;
}
后来,发现可以这样写
bool sort2(string s1,string s2){
return s1+s2>s2+s1;
}
长见识了。
2019.3.30