백준 [실버3] 15651 N과 M (3)

https://www.acmicpc.net/problem/15651

 

1부터 N까지 자연수 중에서 M개를 고른 수열을 구하려면

아래 코드와 같이 재귀를 사용해서 간단하게 중첩 for문을 작성하면 된다

 

이는 백트래킹의 기반 코드이므로 꼭 외워야한다

 

 

소스코드

 

#include <bits/stdc++.h>

using namespace std;
int N,M;
int arr[8];

void recur(int cur)
{
    if(cur == M)
    {
        for(int i = 0; i < M; i++)
        {
            cout << arr[i] << " ";
        }
        cout << "\n";

        return;
    }

    for(int i = 1; i <= N; i++)
    {
        arr[cur] = i;
        recur(cur+1);
    }
}

int main() {
    cin.tie(NULL);
    ios::sync_with_stdio(false);

    cin >> N >> M;
    recur(0);

    return 0;
}
 

 

 

'코딩테스트' 카테고리의 다른 글

백준 [실버3] 15654 N과 M (5)  (0) 2025.01.15
백준 [실버3] 15652 N과 M (4)  (0) 2025.01.15
백준 [실버3] 15650 N과 M (2)  (0) 2025.01.14
백준 [실버3] 15649 N과 M (1)  (0) 2025.01.14
백준 [골드5] 14719 빗물  (0) 2025.01.14
  Comments