728x90
https://www.acmicpc.net/problem/15652
문제 풀이
N과 M(2) 번과 (3) 번을 섞은 듯한 문제이다. 재귀 호출을 할 때 이전 기준값을 시작점으로 삼으면 이전 배열 값보다 크거나 같은 값을 출력할 수 있다.
느낀 점
실은 이번 코드도 (2)번에서 한 것처럼 조건문으로 경우를 따져서 값을 대입하는 방식으로 했었다. 채점 이후 더 나은 방법이 없을까 고민하다가 (2) 번 문제처럼 시작점을 따지는 방법으로 넘어갔다. 코드 길이가 확연히 차이가 났다 T.T
코드
#include <iostream>
#define MAX 9
using namespace std;
int n, m;
int arr[MAX] = { 0, };
void dfs(int cnt, int idx) {
if (cnt == m) {
for (int i = 0; i < m; i++) {
cout << arr[i] << " ";
}
cout << "\n";
return;
}
for (int i = idx; i < n;i++) {
arr[cnt] = i + 1;
dfs(cnt + 1, i);
}
}
int main() {
cin >> n >> m;
dfs(0, 0);
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 9663번 : N-Queen (0) | 2021.05.24 |
---|---|
[C++] 백준 17103번 : 골드바흐 파티션 (0) | 2021.05.24 |
[C++] 백준 15650번 : N과 M (3) (0) | 2021.05.23 |
[C++] 백준 15650번 : N과 M (2) (0) | 2021.05.23 |
[C++] 백준 15649번 : N과 M (1) (0) | 2021.05.22 |
댓글