알고리즘/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;

}