궤도

[백준] 15651번 : N과 M (3) 본문

💻 현생/⛓ 알고리즘

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

영이오 2021. 3. 21. 14:28

문제

 


풀이

 

myunji.tistory.com/198?category=1154147

 

[백준] 15650번 : N과 M (2)

문제 풀이 myunji.tistory.com/73?category=1154147 [백준] 15649번 : N과 M (1) 문제 풀이 백트래킹의 기본 문제이다. 백트래킹은 해당 value의 방문 여부를 따지며 주로 재귀함수로 구현하는 경우가 많다. 그렇..

myunji.tistory.com

번호로는 위 문제의 다음이지만 사실 이 문제가 더 간단하다.

왜냐하면 현재 노드를 기억해 둘 필요도 없고...눈치가 빠른 사람은 알겠지만 입력에 따른 출력 갯수가 N^M이다.


소스코드

 

#include <iostream>
using namespace std;
const int MAX = 8;

int N, M;
int arr[MAX];

void backNM(int cnt) {
    if (cnt == M) { //배열 끝까지 완성하면 출력
        for (int i = 0; i < M; i++)
            cout << arr[i] << ' ';
        cout << '\n';
    }
    else {
        for (int i = 0; i < N; i++) {
            arr[cnt] = i + 1;
            backNM(cnt + 1); //가지 아래로 내려감
        }
    }
}

int main() {
    cin >> N >> M;
    backNM(0);
}

그러니까 15650번의 코드에서 flag 부분만 제외하면 된다.

Comments