득이공간
[백준 C++] 15650 N과 M (2) - 백트래킹 본문
#include <iostream>
using namespace std;
int N, M;
void DFS(int Sequence[], int Index, int Number)
{
if (Index == M)
{
for (int i = 0; i < M; ++i)
{
cout << Sequence[i] << ' ';
}
cout << '\n';
return;
}
Sequence[Index] = Number;
if (Number <= N)
{
DFS(Sequence, Index + 1, Number + 1);
DFS(Sequence, Index, Number + 1);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N >> M;
int Sequence[8];
DFS(Sequence, 0, 1);
}
DFS & 백트래킹을 이용해서 푸는 문제입니다.
1부터 N까지 각 숫자를 고를 때와 안 고를 때를 DFS로 탐색하도록 하고,
현재 숫자가 N을 넘어가면 더 깊이 들어가지 않도록 해서 풀었습니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 C++] 11053 가장 긴 증가하는 부분 수열 - 다이나믹프로그래밍 (0) | 2024.02.20 |
---|---|
[백준 C++] 15654 N과 M (5) - 백트래킹 (0) | 2024.02.20 |
[백준 C++] 16928 뱀과 사다리 게임 - 너비 우선 탐색 (0) | 2024.02.19 |
[백준 C++] 14500 테트로미노 - 브루트포스 (0) | 2024.02.18 |
[백준 C++] 10026 적록색약 - 깊이우선탐색 (0) | 2024.02.18 |