题解
【基础】整数的拼接
1 条题解
-
0
解题思路
把多个整数拼接起来,使结果最大。
不能简单地按数字大小排序。比如 7 和 34,7 比 34 小,但 734 > 347。
正确方法:比较 a+b 和 b+a 的字符串形式,谁大谁排前面。
参考代码
#include <iostream> #include <string> using namespace std; int main() { int n; string s[100]; cin >> n; for (int i = 0; i < n; i++) { cin >> s[i]; } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (s[j] + s[j + 1] < s[j + 1] + s[j]) { swap(s[j], s[j + 1]); } } } for (int i = 0; i < n; i++) { cout << s[i]; } cout << endl; return 0; }复杂度分析
- 时间复杂度:O(N² log M),冒泡排序
- 空间复杂度:O(N)
- 1