컴퓨터기본/문제풀이

[백준] 15651번. N과 M(3)

차가운오미자 2021. 9. 13. 10:39

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

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

문제 이해

Backtracking을 하면서 모든 경우를 탐색하면 된다.

DFS를 사용한다. 

 

작성 코드

#include <iostream>

using namespace std;

int N, M;
int ans[9];

void BackTracking(int cnt){
    if(cnt == M){
        for(int i = 0; i<M; i++){
            cout << ans[i] << " ";
        }
        cout << "\n";
    }
    else{
        for(int i = 1; i<=N; i++){
            ans[cnt] = i;
            BackTracking(cnt+1);
        }
    }
}

int main(void){

    cin >> N >> M;
    BackTracking(0);
    return 0;
}

'컴퓨터기본 > 문제풀이' 카테고리의 다른 글

[정올] 1106 : 장기  (0) 2021.09.14
[백준] 2589번: 보물섬  (0) 2021.09.14
[백준] 15650번: N과 M (2)  (0) 2021.09.13
[백준] 15649번: N과 M(1)  (0) 2021.09.12
[백준] 10814번: 나이순 정렬  (0) 2021.09.11