1038 Recover the Smallest Number (30分)
不太会sort比较函数的写法
#include<iostream>//AC
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int com(string& a, string& b) {
/*if (a == b) { return 1; }
if (a.size() > b.size()) { swap(a, b); }
if (b.find(a) == 0) {
string c = b.substr(a.size());
return com(a, c);
}
else {
return a < b ? -1 : 1;
}*/
return b + a < a + b ? 1 : -1;//参考的柳神
}
bool cmp(string a, string b) {
return com(a, b) < 0;
}
int main() {
int n, cnt = 0;
vector<string> str;
cin >> n;
string s, ans;
for (int i = 0; i < n; i++) {
cin >> s;
str.push_back(s);
}
sort(str.begin(), str.end(), cmp);
for (int i = 0; i < n; i++) {
ans += str[i];
}
for (int i = 0; i < ans.size(); i++, cnt++) {
if (ans[i] != '0') { break; }
}
ans.erase(0, cnt);
if (ans.size() == 0) { cout << '0'; }
for (int i = 0; i < ans.size(); i++) {
cout << ans[i];
}
return 0;
}