//============================================================================
// Name : 1256.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
#define M 13
char data[M + 1];
int charToInt(const char& a) {
if (a < 'a') {
return (a - 'A') * 2;
} else {
return (a - 'a') * 2 + 1;
}
}
int com(const char& a, const char& b) {
int aa = charToInt(a);
int bb = charToInt(b);
return aa < bb;
}
int lessThanOrEqual(const char& a, const char& b) {
int aa = charToInt(a);
int bb = charToInt(b);
return aa <= bb;
}
void myswap(const int& a, const int& b) {
char temp = data[a];
data[a] = data[b];
data[b] = temp;
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%s", data);
int n = strlen(data);
sort(data, data + n, com);
puts(data);
while (1) {
int last = n - 2;
char max = data[n - 1];
while (last >= 0 && lessThanOrEqual(max, data[last])) {
max = data[last];
last--;
}
if (last >= 0) {
char min = 'z' + 1;
int index = 0;
for (int ok = last + 1; ok < n; ok++) {
if (com(data[last], data[ok])) {
if (com(data[ok], min)) {
min = data[ok];
index = ok;
}
}
}
myswap(last, index);
sort(&data[last + 1], &data[n], com);
puts(data);
} else {
break;
}
}
}
return 0;
}
poj1256
最新推荐文章于 2020-03-06 12:26:55 发布