这个题自己写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());
}
这篇博客探讨了如何在C++中使用自定义的cmp函数对字符串数组进行排序,通过a+b<b+a的条件实现最小值优先。博主分享了代码实现,并提到虽然理解cmp函数的工作原理还需深入,但已能成功应用到实践中。
140

被折叠的 条评论
为什么被折叠?



