top1编程
← 返回题目
题解

【基础】整数的拼接

1 条题解

  • 0
    @ 2026-7-31 5:01:59

    解题思路

    把多个整数拼接起来,使结果最大。

    不能简单地按数字大小排序。比如 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