https://www.acmicpc.net/problem/2225
1. 분류
다이나믹 프로그래밍
2. 풀이
규칙만 찾으면 금방 풀리는 문제이다.
나는 이런 류의 문제에서 규칙성이 있겠다 판단되면 엑셀을 켜고 하나하나 대입하여 확인한다.
대부분의 경우에 규칙이 적용되면 금방 구할 수 있기 때문이다.
N, K에 숫자를 0, 0부터 대입하여 몇 개 구하면 바로 알 수 있다.
3. 소스코드
#include <cstdio> typedef long long ll; ll d[201][201]; ll mod = 1000000000LL; int main() { int n, k; scanf("%d %d", &n, &k); for (int i = 1; i <= k; i++) d[i][0] = 1LL; for (int i = 1; i <= n; i++) { d[1][i] = i; d[2][i] = (i + 1LL); } for (int i = 1; i <= n; i++) { for (int j = 3; j <= k; j++) d[j][i] = (d[j - 1][i] % mod + d[j][i - 1] % mod) % mod; } printf("%lld\n", d[k][n]); return 0; }
'알고리즘' 카테고리의 다른 글
BOJ [9461] 파도반 수열 (0) | 2017.08.15 |
---|---|
BOJ [11501] 이항 계수 2 (0) | 2017.08.15 |
BOJ [1920] 수 찾기 (0) | 2017.08.14 |
BOJ [1629] 곱셈 (0) | 2017.08.13 |
BOJ [1780] 종이의 개수 (0) | 2017.08.13 |