반응형
모든 경우의 수를 하나하나 확인해봐야하는 문제다!
엥 간단하다! 하고 덤볐는데 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 |