알고리즘/SWEA
[SWEA 1244] 최대 상금
히더
2018. 8. 13. 15:27
SWEA::1244::최대 상금
출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15Khn6AN0CFAYD
#include <stdio.h>
#include <algorithm>
#include <string>
using namespace std;
int N, K, ans;
char tmp[256];
string s;
void cal(int cnt, int now) {
if (cnt == K) {
ans = max(ans, stoi(s));
return;
}
for (int i = now; i < s.size(); i++) {
for (int j = i; j < s.size(); j++) {
if (i == j)continue;
if (s[i] <= s[j]) {
swap(s[i], s[j]);
cal(cnt + 1, i);
swap(s[i], s[j]);
}
}
}
}
int main() {
int T; scanf("%d", &T);
for (int tc = 1; tc <= T; tc++) {
scanf("%s", tmp); scanf("%d", &K); ans = 0; s = tmp;
cal(0, 0);
printf("#%d %d\n", tc, ans);
}
return 0;
}