BOJ/[ BOJ ] C++

[ C++ ] #15649 N과 M

haena02 2023. 3. 6. 01:55
반응형

 

 

모든 경우의 수를 하나하나 확인해봐야하는 문제다!

엥 간단하다! 하고 덤볐는데 for문 8개 돌리기밖에 생각이 안났다. 

 

어쩌지어쩌지하다가 재귀를 풀면 될 것 같다..! 라고생각했고

배열을 만들어 맨 앞에서 부터 차례대로 채워 나가면 되겠다는 생각을 했다.

 

인자 n번째 칸을 결정하는 함수를 만든뒤 차례차례 뒤에를 채울 수 있게 재귀를 돌렸다.

n번째칸이 문제에서 제시된 M과 같다면 모아놓은 배열을 출력하고 다시 새로운수를 만들면된다.

 

#include<iostream>

using namespace std;

int N, M;
int num[10];
int check[10];

void NM(int n) {

	if (n == M) {
		for (int i = 0; i < M; i++) {
			cout << num[i] << " ";
		}cout << "\n"; return;
	}

	for (int i = 1; i <= N;i++) {
		if (check[i]==0) { //체크가 안된게 있다면
			check[i] = 1;
			num[n] = i;
			NM(n + 1);
			check[i] = 0;
		}
	}

}


int main() {

	cin >> N >> M;

	NM(0);

	return 0;
}

 

반응형

'BOJ > [ BOJ ] C++' 카테고리의 다른 글

[ C++ ] #2493 탑 (골드V)  (2) 2023.12.27
[ C++ ] #1874 스택수열 ( 실버 II )  (1) 2023.12.26
[ C++ ]#17478 재귀함수가 뭔가요?  (0) 2023.03.03
[ C++ ] #1074 Z  (0) 2023.02.28
[ C++ ] #11729 하노이 탑 이동 순서  (0) 2023.02.24