본문 바로가기

하루하나코딩

백준 15650 : N과 M(2)

코드

#include <iostream>

using namespace std;

bool visited[9];
int cases[9];
int N, M;

void dfs(int a, int b){
	if(b == M){
		for(int i = 0; i < M; i++){
			cout << cases[i] << " ";
		}
		cout << "\n";
	}
	for(int i = a; i <= N; i++){
		if(!visited[i]){
			visited[i] = true;
			cases[b] = i;
			dfs(i+1, b+1);
			visited[i] = false;
		}
	}
}

int main(){
	
	cin >> N >> M;
	
	dfs(1, 0);
	
	return 0;
}

알게된 점

백트래킹 어렵다..

진짜 암기해야될것 같다

생각하기 너무 어려워요 ㅜㅜ

'하루하나코딩' 카테고리의 다른 글

백준 15652 : N과 M(4) c++  (1) 2023.02.15
백준 15651 : N과 M(3)  (0) 2023.02.11
백준 15649 : N과 M (1) c++  (0) 2023.02.08
백준 1292 : 쉽게 푸는 문제 c++  (0) 2023.02.07
백준 10844 : 쉬운 계단 수 c++  (0) 2023.02.06