문제 링크
풀이
조합을 이용하여 풀 수 있다.
고등학교 때 확통 공부를 해봤다면 아주 자주 볼 수 있는 문제다. 다리가 겹치지 않아야 하기 때문에 오른쪽의 어떤 다리에 연결할지만 정한다면, 왼쪽 다리가 어느 다리랑 연결될지는 알아서 결정이 되게 된다. 그렇기 때문에 mCn을 하면 된다.
코드
#include <cstdio>
int dp[32][32];
int dpf(int n, int k) {
int &ret = dp[n][k];
if (n == 1 || k == 0 || n == k) return 1;
if (k == 1) return n;
if (ret) return ret;
return ret = dpf(n - 1, k - 1) + dpf(n - 1, k);
}
int main() {
int t; scanf("%d", &t);
while (t--) {
int n, m; scanf("%d %d", &n, &m);
printf("%d\n", dpf(m, n));
}
}
'Algorithm > BOJ' 카테고리의 다른 글
백준[1043] 거짓말 (0) | 2021.11.08 |
---|---|
백준[6549] 히스토그램에서 가장 큰 정사각형 (0) | 2021.11.07 |
백준[10999] 구간 합 구하기 2 (0) | 2021.11.05 |
백준[1182] 부분수열의 합 (0) | 2021.11.05 |
백준[5052] 전화번호 목록 (0) | 2021.11.04 |