目录

蓝桥杯-字符串拼接省模拟赛

蓝桥杯 字符串拼接【省模拟赛】

问题描述

给定四个字符串 a,b,c,da,b,c,d,请将这四个字符串按照任意顺序依次连接拼成一个字符串。

请问拼成的字符串字典序最小是多少?

输入格式

输入四行,每行包含一个字符串。

输出格式

输出一行包含一个字符串,表示答案。

样例输入

LAN
LAN
QIAO
BEI

样例输出

BEILANLANQIAO

评测用例规模与约定

对于所有评测用例,输入的字符串非空串,由大写字母组成,长度不超过 1000。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

时间复杂度和空间复杂度拉满,好歹不费脑子哈哈

#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;
}