这个题自己写cmp写不出来,看了柳神的代码只能说明白了cmp可以自动排列组合.
能用a + b < b + a来返回最小的值,但是具体cmp内部实现还没想清楚,先用着。
#include <bits/stdc++.h>
using namespace std;
vector<string> v;
string sMIn = "9999999999999999999";
bool cmp (string a, string b) {
return a + b < b + a;
}
int main() {
int n;
string s, ans;
scanf ("%d", &n);
for (int i = 0; i < n; i++) {
cin >> s;
v.push_back(s);
}
sort (v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++) {
ans += v[i];
}
int j = 0;
while (ans[j] == '0') ans.erase(j, 1);
if (ans.size() == 0) printf ("0");
else printf ("%s", ans.c_str());
}