본문으로 바로가기

[백준] 알고리즘 2225번 - 합분해 문제

category Algorithm 2020. 12. 13. 01:25

#include <bits/stdc++.h>
using namespace std;
long dp[201][201];

int main() 
{
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n, k,mod= 1000000000;
	cin >> n >> k;
	for (int i = 0; i <= n; i++) {
		dp[1][i] = 1;
	}
	for (int i = 2; i <= k; i++) {
		for (int j = 0; j <= n; j++) {
			for (int l = 0; l <= j; l++) {
				dp[i][j] += dp[i - 1][l];
				dp[i][j] %= mod;
			}
			
		}
	}
	cout << dp[k][n];
	return 0;
}

점화식 - dp[k][n] = d[k-1][l] 

마지막요소를 제외하면 k-1개로 n을 만드는 점화식을 세우면 된다.