这题题意略为坑,在满足上述条件的情况下输出最小字典序。
#include<cstdio>
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<map>
#include<set>
#include<cmath>
#include<cstring>
#include<cctype>
#include<climits>
#include<memory>
using namespace std;
#define LL long long
#define INT (1<<31)-1;
const int N=5000;
char c[30]={"JSBKTCLDMVNWFXGPYHQZR"};//'J','S','B','K',T,C,L,D,M,V,N,W,F,X,G,P,Y,H,Q,Z,R};
char v[10]={"AUEOI"};//A,E,I,O,U};
int main()
{
int t;
cin>>t;
int cas=0;
while(t--)
{
int n;
cin>>n;
int cnum=0,vnum=0;
int ci=0,vi=0;
printf("Case %d: ",++cas);
string s;
string even,odd;
for(int i=0;i<n;i++)
{
if(i%2)
{
odd+=c[ci];
cnum++;
if(cnum==5)
{
cnum=0;
ci++;
}
}
else
{
even+=v[vi];
vnum++;
if(vnum==21)
{
vnum=0;
vi++;
}
}
}
sort(even.begin(),even.end());
sort(odd.begin(),odd.end());
int ei=0,oi=0;
for(int i=0;i<n;i++)
{
if(i%2==0)
cout<<even[ei++];
else
cout<<odd[oi++];
}
cout<<endl;
}
return 0;
}