Developer/일상다반사
n 개의 원소중 m개를 고르는 모든 조합을 찾는 알고리즘
cepiloth
2017. 8. 20. 21:43
728x90
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | /* * n: 전체 원소의 수 * arr : 지금가지 고른 원소들의 번호 * toPick : 더 고를 원소의 수 * 일 때, 앞으로 toPick 개의 원소를 고르는 모든 방법을 출력한다. */ void toPick(const vector<int>& arr, int n, int toPick) { // 기저 사례: 더 고를 원소가 없을 때 고른 원소들을 출력한다. if (toPick == 0) { printArr(arr); } // 고를 수 있는 가장 작은 번호를 계산한다. int next = arr.size() == 0 ? 0 : arr.back() + 1; // 이 단계에서 원소 하나를 고른다. for(;next < n; ++next) { arr.push_back(next); toPick(arr, n, toPick - 1); arr.pop_push(); } } | cs |
728x90
반응형