一、思路
贪心逻辑排序:a与b两串,若依据字典序比较,a作为b前缀比b作为a前缀小,则a在前;
排序后可得最小字典序组合;
二、代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int N, flag = 0;
cin >> N;
vector<string> num(N);
for( int i = 0; i < N; ++i )
cin >> num[i];
sort( num.begin(), num.end(), [] (string a, string b) { return a + b < b + a; } );
for( int i = 0; i < N; ++i )
for( int j = 0; j < num[i].size(); ++j )
if( flag )
cout << num[i][j];
else if( num[i][j] != '0' )
{
flag = 1;
cout << num[i][j];
}
if( !flag )
cout << 0;
}