아무거나 내꺼 공부할래
[개념] 조합 구하기 / c & c++ / 제한시간 없음 본문
#pragma warning(disable:4996)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int n, r;
int ch[20];
void dfs(int s, int L) {
if (L == r) {
for (int j = 0; j < L; j++) {
printf("%d ", ch[j]);
}
puts("");
}
else {
for (int i = s; i < n; i++) {
ch[L] = i;
dfs(i + 1, L + 1);
}
}
}
int main() {
scanf("%d %d", &n, &r);
dfs(0, 0);
return 0;
}
위 코드는 정말 간단한 nCr를 코드로 작성한 것이다.
여러 문제에서 조합(Combination)을 사용하는 경우가 많은데
문제마다 if(L==r) 에서의 코드만 잘 변형시키면 문제 없음!
'[c언어&c++] 알고리즘 공부 > 개념' 카테고리의 다른 글
[개념] 네트워크 선 자르기(Top-Down, 재귀, 메모이제이션) / c++ & c / 제한시간 없음 (0) | 2021.02.27 |
---|---|
[개념] 네트워크 선 자르기(Bottom-Up, DP) / c++ & c / 제한시간 없음 (0) | 2021.02.27 |
[개념] 친구찾기(Union&Find 자료구조) / c & c++ / 제한시간 없음 (0) | 2021.02.18 |
[개념] 이항계수(메모이제이션) / c & c++ / 제한시간 없음 (0) | 2021.02.18 |
[개념] 최대힙(priority_queue, 우선순위큐) / c++ / 제한시간 없음 (0) | 2021.02.17 |