https://www.acmicpc.net/problem/2225
규칙을 찾아보려고 했을 때 쉽지 않았다. DP에서 가장 중요한 것은 점화식이 아닐까...
우선 점화식이 찾는 습관부터 들이도록 하자.
하향식 접근으로 간단하게 문제를 풀어보았다.
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
|
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int N, K;
long long dp[201][201];
long long solve(int N, int K) {
if (K == 1)
return 1;
if (dp[N][K] != -1)
return dp[N][K];
dp[N][K] = 0;
for (int i = 0; i <= N; i++)
dp[N][K] = ((dp[N][K]) + (solve(N - i, K - 1) % 1000000000)) % 1000000000;
return dp[N][K];
}
int main(void) {
cin >> N >> K;
memset(dp, -1, sizeof(dp));
cout << solve(N, K) << endl;
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'알고리즘 > 백준' 카테고리의 다른 글
9252번 : LCS 2 (0) | 2020.02.03 |
---|---|
11066번 : 파일 합치기 (0) | 2020.02.01 |
1890번 : 점프 (0) | 2020.01.31 |
11054번 : 가장 긴 바이토닉 부분 수열 (0) | 2020.01.31 |
1520번 : 내리막 길(C++, 시간 초과, Bottom-up, Top-down) (0) | 2020.01.28 |