No Rules Rules

로또 (feat. 백준, 6603번) 본문

생활/코테

로또 (feat. 백준, 6603번)

개발하는 완두콩 2022. 9. 15. 18:28
728x90
반응형

로또
https://www.acmicpc.net/problem/6603

 

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#define MAX_CNT     6
using namespace std;
int K, S[13], arr[MAX_CNT];
bool visit[13];
void dfs(register int idx, register int cnt){
    if(cnt == MAX_CNT){
        for(register int k = 0; k < MAX_CNT; ++k)
            cout << arr[k] << " ";
        cout << "\n";
        return;
    }
    for(register int i = idx; i < K; ++i)
        if(!visit[i]){
            visit[i] = true;
            arr[cnt] = S[i];
            dfs(i + 1, cnt + 1);
            visit[i] = false;
            arr[cnt] = 0;
        }
}
int main(){
    ios::sync_with_stdio(false), cin.tie(NULL);    
    while(1){
        cin >> K;
        if(K == 0)
            break;
        for(register int k = 0; k < K; ++k)
            cin >> S[k], visit[k] = false;
        dfs(0, 0);
        cout << "\n";
    }
    return 0;
}
// *&)*@*

 

 

  1. 전형적인 N개중 M개의 조합을 구하는 문제입니다.
  2. 조합은 dfs를 이용하면 간단하게 구할 수 있습니다.

 

 

728x90
반응형
Comments