这个题就是贪心,主要是先来看看一共有多少个棍子,然后预留出来2*n个棍子,然后再贪心选取,9,是6,7是3,优先选择9,7然后就是判断是否是棍子摆不完,然后这时候选取别的,这时候自己yy一下就行了
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
char str[N];
int vis[30];
int main()
{
int t;
scanf("%d",&t);
while(t--){
memset(vis, 0 , sizeof(vis));
scanf("%s",str);
char Min ,huan , Max;
int cnt , l = strlen(str);
int flag = 1;
vis[str[0] - 'a'] = 1;
Max = str[0];
Min = 'z';
for(int i = 1 ; i < l ; i++){
if(!vis[str[i] - 'a'] && str[i] < Max){
Min = min(str[i] , Min);
flag = 0;
}
if(str[i] > Max) Max = str[i];
vis[str[i]-'a'] = 1;
}
//printf("min = %c\n",Min);
if(flag == 1)puts(str);
else{
for(int i = 0 ; i < cnt + 1 ; i++){
if(str[i] > Min ){
huan = str[i];
break;
}
}
for(int i = 0 ; i < l ; i++){
if(str[i] == Min) str[i] = huan;
else if(str[i] == huan) str[i] = Min;
}
puts(str);
}
}
}