string a;
cin>>a; cin读入遇到空格就停止!读包含空格的字符串时应 getline(cin,a) 读a直到遇到回车
getline(cin,a,'#');读a直到遇到字符# (也可以换成别的字符)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
bool cmp(string a, string b)
{
string st1 = a + b;
string st2 = b + a;
return st1 > st2;
}
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
vector<string> vec;
string stt;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> stt;
vec.push_back(stt);
}
sort(vec.begin(), vec.end(), cmp);
for (int i = 0; i < n; i++) {
cout << vec[i];
}
cout << endl;
}
}
自定义cmp函数时要注意不能直接return a>b而是应该让两个字符串相加后,判断哪种组合方式的字典序大哪个就排前面,这样可以比较561和56这样位数不同的情况