#include <iostream>
#include <string>
#include <vector>
#include <memory.h>
#include <algorithm>
using namespace std;
string numStr;
int ans = 0;
vector<int> cand[11];
void getMaxNumber(int cnt, int changeCnt) {
int val = stoi(numStr);
if (cnt == changeCnt) {
ans = max(ans, val);
return;
}
for (int i = 0; i < cand[cnt].size(); i++) {
if (cand[cnt][i] == val)
return;
}
cand[cnt].push_back(val);
for (int i = 0; i < numStr.size()-1; i++) {
char num1 = numStr[i];
for (int j = i + 1; j < numStr.size(); j++) {
char num2 = numStr[j];
numStr[i] = num2;
numStr[j] = num1;
getMaxNumber(cnt + 1, changeCnt);
numStr[i] = num1;
numStr[j] = num2;
}
}
}
int main(int argc, char** argv)
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int test_case;
int T;
// freopen("input.txt", "r", stdin);
cin >> T;
/*
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
*/
for (test_case = 1; test_case <= T; ++test_case)
{
int changeCnt;
cin >> numStr >> changeCnt;
ans = 0;
for (int cnt = 0; cnt < changeCnt; cnt++) {
cand[cnt].clear();
}
getMaxNumber(0, changeCnt);
cout << "#" << test_case << " " << ans << "\n";
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
Leave a comment