조합(combination)

Kim Yuhyeon·2023년 4월 24일
0

알고리즘 + 자료구조

목록 보기
94/161

조합(combination)


순서와 상관 X 뽑는

공식

nCr = n! / r!(n-r)!

재귀함수

[TIP]
3개 뽑는거 까진 중첩 for문
4개 이상부터 재귀 good

void combi(int start, vector<int> b) {
   // 기저 사례 (k개 뽑았을 경우)
   if (b.size() == k)
      print(b);
      return;
   }
   
   // 인덱스 기반으로 뽑기
   for(int i = start + 1; i < n; i++){
      b.push_back(i);
      combi(i, b);
      b.pop_back(i);
   }
   
   return;
}

중첩 for문

3개 뽑는 경우

for(int i=0; i<n; i++) {
   for(int j=0; j<i; j++) { // j=i+1; j<n;
      for(int k=0; k<j; k++) { // k=j+1; k<n; 도 가능
         cout << i << " : " << j << " : " << k << "\n";
      }
   }
}

2개 뽑는 경우는 2중첩만 하면 됨.

0개의 댓글