蓝桥杯 字符串拼接【省模拟赛】
问题描述
给定四个字符串 a,b,c,da,b,c,d,请将这四个字符串按照任意顺序依次连接拼成一个字符串。
请问拼成的字符串字典序最小是多少?
输入格式
输入四行,每行包含一个字符串。
输出格式
输出一行包含一个字符串,表示答案。
样例输入
LAN LAN QIAO BEI
样例输出
BEILANLANQIAO
评测用例规模与约定
对于所有评测用例,输入的字符串非空串,由大写字母组成,长度不超过 1000。
运行限制
语言 最大运行时间 最大运行内存 C++ 1s 256M C 1s 256M Java 2s 256M Python3 3s 256M PyPy3 3s 256M Go 3s 256M JavaScript 3s 256M
时间复杂度和空间复杂度拉满,好歹不费脑子哈哈
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<string> vstr;
for(int i=0; i<4; i++){
string cur;
cin>>cur;
vstr.push_back(cur);
}
int an[24][4] = {{0, 1, 2, 3}, {0, 1, 3, 2}, {0, 2, 1, 3}, {0, 2, 3, 1}, {0, 3, 1, 2}, {0, 3, 2, 1}
,{1, 0, 2, 3}, {1, 0, 3, 2}, {1, 3, 0, 2}, {1, 3, 2, 0}, {1, 2, 3, 0}, {1, 2, 0, 3}
,{2, 0, 1, 3}, {2, 0, 3, 1}, {2, 1, 0, 3}, {2, 1, 3, 0}, {2, 3, 1, 0}, {2, 3, 0, 1}
,{3, 0, 1, 2}, {3, 0, 2, 1}, {3, 1, 0, 2}, {3, 1, 2, 0}, {3, 2, 1, 0}, {3, 2, 0, 1}};
vector<string> sort_v;
for(int i=0; i<24; i++){
string cur;
for(int j=0; j<4; j++){
if(j==0){
cur = vstr[an[i][j]];
}
else{
cur += vstr[an[i][j]];
}
}
//cout<<cur<<endl;
sort_v.push_back(cur);
}
sort(sort_v.begin(), sort_v.end());
cout<<sort_v[0];
return 0;
}