[BOJ] 1010 : 다리놓기

1010 : 다리놓기

풀이

DP

직접 그림판에 그려가면서 경우의수를 계산한뒤 점화식을 생각해냈다.

4의경우 : (1 4):4개 (2 4):6개 (3 4):4개 (4 4):1개

5의경우 : (1 5):5개 (2 5):10개 (3 5):10개 (4 5):5개 (5 5):1개

6의경우 : (1 6):6개 (2 6):15개 (3 6):20개 (4 6):15개 (5 6):6개 (6 6):1개

코드

#include <iostream>
#include <string>
using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int arr[30][30] = { 0 };
    arr[1][0] = 1;
    arr[1][1] = 1;
    for (int i = 2; i < 30; i++) {
        arr[i][0] = 1;
        for (int j = 1; j < i; j++) {
            arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
        }
        arr[i][i] = 1;
    }

    int T;
    cin >> T;
    while (T--) {
        int n, m;
        cin >> n >> m;
        cout << arr[m][n] << '\n';
    }
    return 0;
}
Written on March 15, 2019