1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // 18분 #include <cstdio> using namespace std; int d[1001][1001]; // nCr = n-1Cr + n-1Cr-1 int dp(int n, int k) { if (d[n][k] > 0) return d[n][k]; if (n < k) return 0; else if (n == k || k == 0) return 1; else return d[n][k] = (dp(n - 1, k) + dp(n - 1, k - 1)) % 10007; } int main() { int n, k; scanf("%d %d", &n, &k); printf("%d\n", dp(n, k)); return 0; } | cs |
DP를 이용한 조합 문제 풀이
예외조건을 잘 처리해줄 것!
백준 1309 동물원 (0) | 2018.05.18 |
---|---|
백준 1965 상자넣기 (0) | 2018.05.18 |
백준 4344 평균은 넘겠지 (0) | 2018.05.18 |
백준 9251 LCS (0) | 2018.05.18 |
백준 2167 2차원 배열의 합 (0) | 2018.05.18 |
댓글,
jayharvey
머신러닝/딥러닝 관련 글을 포스팅할 예정입니다 :)