[ BOJ / C++ ] 6603번 로또

8430 단어 bojcppboj

이번 문제는 함수의 재귀 호출을 이용하여 해결하는 문제였다.

  • 트리가 만들어진다고 생각을 한다.
  • 재귀함수를 통해 완전탐색으로 탐색하여 result배열에 하나씩 채워 넣고 트리의 깊이가 6이 되면 result배열을 출력한다.

Code

#include <iostream>
#define MAX 13
using namespace std;

int n;
int arr[MAX]={0};
int result[MAX];


void Init(){
    for(int i=0; i<n; i++){
        arr[i]=0;
        result[i]=0;
    }
}
void Input(){
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>arr[i];
    }
}
void DFS(int start, int depth){
    if(depth==6){
        for(int i=0; i<6; i++){
            cout<<result[i]<<" ";
        }
        cout<<endl;
        return ;
    }
    for(int i=start; i<n; i++){
        result[depth]=arr[i];
        DFS(i+1, depth+1);
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    while(1){
        Init();
        Input();
        if(n==0)
            break;
        DFS(0,0);
        cout<<endl;
    }
    return 0;
}

좋은 웹페이지 즐겨찾기