PS/BOJ
백준 9742번: 순열 (C++)
도비(Doby)
2022. 5. 4. 23:43
https://www.acmicpc.net/problem/9742
9742번: 순열
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전
www.acmicpc.net
Solved By: BackTracking
찾아야 하는 순서가 백트래킹으로 구해지는 순서 안에 있다면 결과 string에 해당 문자열을 할당해주고, 아니라면 빈 문자열을 반환하도록 아무것도 할당하지 않았습니다.
#include <iostream>
#include <vector>
using namespace std;
string s;
int n;
int cnt;
string res;
bool visited[10];
void backTracking(string a){
if(a.size() == s.size()){
++cnt;
if(cnt == n){
res = a;
}
return;
}
for(int i = 0; i < s.size(); i++){
if(!visited[i]){
visited[i] = true;
backTracking(a + s[i]);
visited[i] = false;
}
}
}
int main(){
while(cin >> s >> n){
cnt = 0; res = "";
cout << s << ' ' << n << " = ";
backTracking("");
if(res == "") cout << "No permutation";
else cout << res;
cout << '\n';
}
}