728x90
반응형
https://www.acmicpc.net/problem/10974
10974번: 모든 순열
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
www.acmicpc.net
sol 1) next_permutation을 이용
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
vector<int> v;
for(int i = 0; i < n; i++){
v.push_back(i + 1);
}
do{
for(int i = 0; i < n; i++){
cout << v[i] << " ";
}
cout << '\n';
} while(next_permutation(v.begin(), v.end()));
return 0;
}
sol2) 백트래킹을 이용 (15649번과 비슷)
#include <iostream>
using namespace std;
int n;
int arr[9];
bool isused[9];
void func(int k) {
if(k == n + 1) {
for(int i = 1; i <= n; i++)
cout << arr[i] << " ";
cout << "\n";
}
else {
for(int i = 1; i <= n; i++){
if(!isused[i]) {
isused[i] = true;
arr[k] = i;
func(k + 1);
isused[i] = false;
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n;
func(1);
return 0;
}
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 20300번 서강근육맨 (C++) (0) | 2022.04.29 |
---|---|
[BOJ] 12813번 이진수 연산 (C++) (0) | 2022.03.07 |
[BOJ] 11659번 구간 합 구하기 4 (C++) (0) | 2022.03.06 |
[BOJ] 17298번 오큰수 (C++) (0) | 2022.03.05 |
[BOJ] 20126번 교수님의 기말고사 (C++) (0) | 2022.03.04 |