2019년 4월 13일 토요일

# 조합( nCk :: n개중 k개를 이용한 ) 구하기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <vector>

using namespace std;

vector<int> numbers;
vector<int> combination;
int N, K; // 총 N 개중 K를 골라 조합을 만든다.

void input()
{
    cin >> N >> K;
    numbers.resize(N);
    for (int i = 0; i < N; ++i)
        cin >> numbers[i];
}

void PrintCombi(const vector<int>& v) {
    
    for (int i = 0; i < v.size(); ++i)
    {
        cout << v[i] << " ";
    }
    cout <<endl;
}

void Combi(int offset, int k) {
    if (k == 0) {
        PrintCombi(combination);
        return;
    }
    for (int i = offset; i <= numbers.size() - k; ++i) {
        combination.push_back(numbers[i]);
        Combi(i + 1, k - 1);
        combination.pop_back();
    }
}

int main() {
   
    input();
    Combi(0, K);

    return 0;
} 

댓글 없음:

댓글 쓰기