백준 15649번: N과 M (1)

5617 단어 cpp백준cpp

문제

문제 바로가기> 백준 15649번: N과 M (1)

풀이

재귀를 이용한 backtraking으로 문제를 풀었다. 방문할 때 마다 값을 저장해 놓고 m개 방문시 저장된 값들을 출력해 주었다.

#include<iostream>
using namespace std;

int n, m;
int arr[9]={};
bool visit[9]={false};

void backtracking(int idx){
    if(idx==m) {
        for(int i=0; i<m; i++) cout << arr[i] << ' ';
        cout <<'\n';
        return;
    }
    for(int i=1; i<=n; i++){
        if(!visit[i]){
            visit[i] = true;
            arr[idx] = i;
            backtracking(idx+1);
            visit[i] = false;
        }
    }
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    cin>>n>>m;
    backtracking(0);
}

좋은 웹페이지 즐겨찾기