하루하나코딩
백준 15649 : N과 M (1) c++
HAHAKO
2023. 2. 8. 19:46
코드
#include <iostream>
using namespace std;
int N, M;
bool visited[9];
int cases[9];
void dfs(int a){
if(a == M){
for(int i = 0; i < M; i++){
cout << cases[i] << " ";
}
cout << "\n";
}
for(int i = 1; i <= N; i++){
if(!visited[i]){
visited[i] = true;
cases[a] = i;
dfs(a+1);
visited[i] = false;
}
}
}
int main(){
cin >> N >> M;
dfs(0);
return 0;
}
알게된 점
백트래킹이란 알고리즘을 알게 되었다.
dfs의 일종인데
재귀함수를 이용하면 됐다.
아직 잘 모르겠어서 백트래킹 문제를 더 풀어봐야 할 것 같다.