본문 바로가기
온라인저지

[BOJ] 1010번: 다리 놓기

by plzfday 2018. 6. 3.

1010번: 다리 놓기

풀이

문제 읽을 때부터 뭔가 조합의 느낌이 났는데 조합이었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그래서 nCr을 구현해주면 된다.

코드

#include <cstdio>
#include <cstring>
int n, r, D[31][31];

long long int nCr(int n, int r)
{
    if (n == r || r == 0)
        return D[n][r] = 1;
    if (r == 1)
        return D[n][r] = n;
    if (D[n][r])
        return D[n][r];
    return D[n][r] = (nCr(n - 1, r - 1) + nCr(n - 1, r));
}

int main()
{
    int T;
    scanf("%d", &T);
    while (T--)
    {
        scanf("%d %d", &n, &r);
        printf("%lld\n", nCr(r, n));
        memset(D, 0, sizeof(D));
    }
    return 0;
}

'온라인저지' 카테고리의 다른 글

[BOJ] 11048번: 이동하기  (0) 2018.06.04
[BOJ] 1932번: 정수 삼각형  (0) 2018.06.04
[BOJ] 11057번: 오르막 수  (0) 2018.06.03
[BOJ] 2163번: 초콜릿 자르기  (0) 2018.06.02
[BOJ] 5622번: 다이얼  (0) 2018.06.02
[BOJ] 11052번: 붕어빵 판매하기  (0) 2018.06.02

댓글