문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
Solved.ac 레벨
실버 III
풀이
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> vec;
bool visited[9];
int arr[9];
void DFS(int dep){
if(dep == n){
for(int i = 0; i < n; i++){
cout << arr[i] << " ";
}
cout << "\n";
} else {
for(int i = 0; i < n; i++){
if(!visited[i]){
visited[i] = true;
arr[dep] = vec[i];
DFS(dep + 1);
visited[i] = false;
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for(int i = 1; i <= n; i++){
vec.push_back(i);
}
DFS(0);
return 0;
}
'Study (etc) > Problem Solving' 카테고리의 다른 글
[BOJ / C++] 5554번 : 단어순서 뒤집기 (0) | 2023.03.25 |
---|---|
[BOJ / C++] 12605번 : 단어순서 뒤집기 (0) | 2023.03.24 |
[BOJ / C++] 1990번 : 소수인팰린드롬 (0) | 2023.03.24 |
[BOJ / C++] 15965번 : K번째 소수 (0) | 2023.03.24 |
[BOJ / C++] 11057번 : 오르막 수 (0) | 2023.03.24 |