풀이
- depth가 0일 때는 배열에 첫 수를 넣어주고, 아닐 때는 배열에 없는 수를 찾아서 넣어준다.
void BT(int depth){
for (int i = 1; i <= N; i++){
if (!depth) arr[0] = i;
else{
int j;
for (j = 0; j < depth; j++)
if (arr[j] == i) break; // 'arr' contains 'i'.
if (j == depth) arr[depth] = i;
else continue;
}
- 배열에 없는 수를 넣은 후에 배열의 요소가 M개이면 출력을, 아니면 탐색을 진행한다.
if (depth + 1 == M){
for (int idx = 0; idx < M; idx++)
printf("%d ", arr[idx]);
putchar(10);
}else BT(depth + 1);
}
}
소스코드
#include <stdio.h>
int arr[8], N, M;
void BT(int depth){
for (int i = 1; i <= N; i++){
if (!depth) arr[0] = i;
else{
int j;
for (j = 0; j < depth; j++)
if (arr[j] == i) break;
if (j == depth) arr[depth] = i;
else continue;
}
if (depth + 1 == M){
for (int idx = 0; idx < M; idx++)
printf("%d ", arr[idx]);
putchar(10);
}else BT(depth + 1);
}
}
int main(){
scanf("%d%d", &N, &M);
BT(0);
}
출처 및 참고자료
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 2556] 별 찍기 - 14 [C] (0) | 2021.08.04 |
---|---|
[백준 1550] 16진수 [C] (0) | 2021.08.04 |
[백준 2606] 바이러스 [C] (0) | 2021.08.04 |
[백준 2003] 수들의 합 2 [C] (0) | 2021.08.04 |
[백준 11441] 합 구하기 [C] (0) | 2021.08.03 |