[백준/C] 15652 - N과 M (4)

orangesnail·2024년 8월 9일

백준

목록 보기
2/169
post-thumbnail

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


같은 수를 여러 번 골라도 되지만, 수열이 비내림차순이어야 된다는 조건이 추가되었다. 여기서 비내림차순이라는 것은 사실상 오름차순이라는 말과 같다. 15650번과 똑같은 문제인 것이다.

현재 숫자와 같거나 큰 숫자로 수열의 다음 수를 구성할 수 있게 하기 위해서 bt 함수의 파라미터로 start를 추가해준다. 이 값은 초기값이 1이며, for문 안에서 bt가 호출될 때는 i 값으로 넘겨준다.


전체 코드

#include <stdio.h>

void printSequence(int *sequence, int m) {
    for (int i = 0; i < m; i++)
        printf("%d ", sequence[i]);
    printf("\n");
}

void bt(int n, int m, int depth, int *sequence, int start) {
    if (depth == m) {
        printSequence(sequence, m);
        return;
    }

    for (int i = start; i <= n; i++) {
        sequence[depth] = i;
        bt(n, m, depth + 1, sequence, i);
    }
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);

    int sequence[m];
    bt(n, m, 0, sequence, 1);
    return 0;
}
profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글