단계와 끝자리 수를 이용해서 DP를 정의할 수 있다.
단계만을 매개변수로 사용할 경우에는, 점화식을 세울 수 없다.
끝자리 수를 이용해서, 점화식을 완성할 수 있다.
DP[i][j] += DP[i - 1][k] (0 <= k <= j)
해설코드(C++).
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
|
#include <iostream>
using namespace std;
long long dp[65][10];
int T, N;
int main() {
for(int i = 0; i < 10; i++)
dp[1][i] = 1;
for(int i = 2; i <= 64; i++){
for(int j = 0; j < 10; j++){
dp[i][j] = 0;
for(int k = 0; k <= j; k++){
dp[i][j] += dp[i - 1][k];
}
}
}
cin >> T;
for(int i = 1; i <= T; i++){
cin >> N;
long long answer = 0;
for(int j = 0; j < 10; j++)
answer += dp[N][j];
cout << answer << endl;
}
return 0;
}
|
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ 1107] 리모컨 (0) | 2020.05.25 |
---|---|
[BOJ 1182] 부분수열의 합(비트마스크, 재귀함수, C++) (0) | 2020.05.24 |
[BOJ 2309] 일곱 난쟁이 (0) | 2020.05.19 |
[BOJ 1254] 팰린드롬 만들기 (0) | 2020.05.19 |
[BOJ 1562] 계단 수 (0) | 2020.05.17 |