코딩/백준 - c++
[백준] 15651번 N과 M (3) - c++
코딩 코딩 코오딩
2022. 3. 20. 21:08
https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
#include<iostream>
using namespace std;
int arr[9];
bool visited[9] = {false,};
int n, m;
void dfs(int cnt ) {
if (cnt == m) {
for (int i = 0; i < m; i++) {
cout << arr[i] << ' ';
}
cout << '\n';
}
else {
for (int i = 1; i <=n ; i++) {
visited[i] = true;
arr[cnt] = i;
dfs(cnt + 1);
visited[i] = false;
}
}
}
int main() {
cin >> n >> m;
dfs(0);
}
n 과 m 시리즈를 모두 풀었다 마지막 문제는 좀 쉬웠다?
하지만 이 백트래킹 문제는 꼭 숙지해두자
재귀가 들어가기 때문에 사고를 많이 요하는 거 같다.
생각해야할것
1. 중단 조건 생각하기
2. 인수에 들어갈 인자에 대하여 고려하기
3. 함수 진행 과정 생각해보기
반응형