하루하나코딩

백준 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의 일종인데

재귀함수를 이용하면 됐다.

아직 잘 모르겠어서 백트래킹 문제를 더 풀어봐야 할 것 같다.