Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Mini

백준 2225 합분해 c++ // dp 규칙찾는 방법 본문

Algorithm/dp

백준 2225 합분해 c++ // dp 규칙찾는 방법

Mini_96 2023. 11. 29. 23:00

https://www.acmicpc.net/problem/2225

 

2225번: 합분해

첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

1. dp 규칙찾는 방법

1.1 표를그린다

1.2 규칙을세우고(뒤에만 숫자추가하기) 경우의수를 센다.

1.3. 그 숫자가 어디서 왔는지 규칙을 찾고 화살표로 표시한다

1.4. 규칙을 찾았으면 dp 테이블로 옮기고 숫자의 이동을 표시한다.

1.5. 점화식을 세운다(dp[j]=dp[j]+dp[j-1])

 

2. 전체코드

#include <bits/stdc++.h>

using namespace std;

int n, k;
int dp[204];
int divd = 1000000000;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> k;

    fill(dp, dp + 204, 1);

    for (int i = 2; i <= k; ++i) { //회차
        for (int j = 1; j <= n; ++j) {
            dp[j] = dp[j]%divd + dp[j - 1]%divd;
            //cout << dp[j] << " ";
        }
    }

    //for (int i = 0; i <= n; ++i) cout << dp[i] << " ";
    cout << dp[n] % divd;

    return 0;
}