less than 1 minute read

  • 분류: 백트래킹

코드

#include <iostream>

int n, m;
int seq[9];

void dfs(int depth) {
    if(depth==m) {
        for(int a=0 ; a<m ; a++) {
            std::cout << seq[a] << ' ';
        }
        std::cout << "\n";
        return;
    }
    for(int i= (depth==0)? 0 : seq[depth-1]-1 ; i<n ; i++) {
        seq[depth] = i+1;
        dfs(depth+1);
    }
}

int main() {
    std::cin >> n >> m;
    dfs(0);
}

  • 코멘트

    (3)(1)에서 (2)로 바꾸듯 바꿔 준다.