문풀 ❓
[알고리즘] 15649 / N과 M(1) / C++
narang111
2022. 8. 29. 18:57
브루트포스 문제는
- 재귀
- 순열
- 비트마스크
를 사용해서 풀 수 있는데 순열, 비트마스크로 푸는 방법 모두 재귀를 쓰는 방법으로 만들 수 있기 때문에
재귀가 가장 중요하다.
재귀를 사용한 브루트포스 문제는
- 순서
- 선택
문제를 풀 수 있다.
❓ 대표적으로 15649 백준 N과 M 문제가 있다.
▶ 1부터 N까지 자연수 중에 중복 없이 M개를 고른 수열을 모두 구하는 문제이다.
- '중복없이' 조건이 있기 때문에 중복체크를 해줄(기억해 줄) 배열이 필요하다.
void make_seq(int index, int n, int m) {
if (index == m) {
return;
}
for (int i = 1; i <= n; i++) {
if (c[i]) continue;
c[i] = true;
a[index] = i;
make_seq(index + 1, n, m);
c[i] = false;
}
}