Link

点击打开uva题目链接

Mean

给定n个正整数,你的任务是把他们链接成一个最大的整数。比如,123、124、56、90有24种链接方法,最大的结果是9056124123.

Analyse

这个题以前在知乎上看到过,记得是一个人推荐的思维性比较高的面试题。思路实际上就是一个排序,排序的规则是字符串拼接后,看A+B和B+A谁大即可。

C++ Code

#include <bits/stdc++.h>
using namespace std;

string s[77];

int main() {
    ios::sync_with_stdio(false); cin.tie(NULL);
    int n;
    while(cin >> n && n) {
        for(int i = 0; i < n; ++i)
            cin >> s[i];
        sort(s, s + n, [](const string &a, const string &b) { return a + b > b + a; });
        for(int i = 0; i < n; ++i)
            cout << s[i];
        cout << endl;
    }
    return 0;
}

1 条评论

欢迎留言