- N과 M 수열 시리즈 중 하나
- 기존 문제들을 풀었다면 중복이 가능하다는 점만 고려하면 되기 때문에 간단하게 풀린다.
- 재귀 함수 내부적으로 돌아가는 반복문을 어떻게 조절하느냐가 시리즈의 핵심 내용
#include <iostream>
using namespace std;
int n, m;
int ans[8];
void check(int cur, int size)
{
if(size == m) // 길이가 M 에 도달하면 값들 출력 후 종료
{
for(int i = 0 ; i < m ; i++)
{
cout << ans[i] << " ";
}
cout << endl;
return;
}
for(int i = cur ; i < n ; i++) // 중복 가능하기 때문에 cur 부터 끝까지 반복
{
ans[size] = i + 1; // 현재 자리에 값을 넣어주고
check(i, size + 1); // 다음 값 결정하기 위한 재귀
}
}
int main(void)
{
cin >> n >> m;
check(0, 0);
}
'PS > BOJ' 카테고리의 다른 글
[백준] 15657.cpp : N과 M (8) (0) | 2020.07.25 |
---|---|
[백준] 15654.cpp : N과 M (5) (0) | 2020.07.24 |
[백준] 2407.cpp : 조합 (0) | 2020.07.22 |
[백준] 15353.cpp : 큰 수 A+B (2) (0) | 2020.07.20 |
[백준] 16566.cpp : 카드 게임 (0) | 2020.07.19 |