网站建设公司的公司,网络设计规划,网页代码教程,重庆关键词seo排名题目描述#xff1a;
设有n个正整数#xff0c;将他们连接成一排#xff0c;组成一个最大的多位整数。 如:n3时#xff0c;3个整数13,312,343,连成的最大整数为34331213。 如:n4时,4个整数7,13,4,246连接成的最大整数为7424613。
输入描述:
有多组测试样例#xff0c…题目描述
设有n个正整数将他们连接成一排组成一个最大的多位整数。 如:n3时3个整数13,312,343,连成的最大整数为34331213。 如:n4时,4个整数7,13,4,246连接成的最大整数为7424613。
输入描述:
有多组测试样例每组测试样例包含两行第一行为一个整数NN100第二行包含N个数(每个数不超过1000空格分开)。
输出描述:
每组数据输出一个表示最大的整数。
示例1
输入
2
12 123
4
7 13 4 246
输出
12312
7424613
解题思路
我原本想的是用string类的方法compare()将较大的那个放在拼接的前面但是这个函数的结果并不符合预期导致第一遍只有40的测试用例通过因为对于12123这两个数compare()的结果是123较大拼接起来为12312结果是对的但是对于93936这两个数compare()的结果是936大拼接起来的结果是93693而93936明显更大。于是我就自己写了一个int comp(string str1,string str2)函数直接对拼接结果进行性比较这样找出的最大值更有参考价值。
解题代码
#includeiostream
#includestring.h
using namespace std;int comp(string str1,string str2){if((str1str2)(str2str1))return 1;elsereturn -1;
}int main(){int N;int i;int count;int max_index;string str[100];string Output;cinN;for(i0;iN;i)cinstr[i];for(count0;countN;count){max_index0;for(i0;iN-count;i){if(comp(str[max_index],str[i])0)max_indexi;}Output.append(str[max_index]);str[max_index].clear();for(int kmax_index;kN-count;k)str[k]str[k1];}coutOutput;return 0;
}
欢迎留言交流。。。