반응형
D[i][j] = i개의 동전을 활용하여 j원을 만드는 경우의 수
1.A[i]를 사용하는 경우 - > A[i-1]까지의 동전을 사용하여 j-A[i]원을 만들어야함 : D[i][j] += D[i-1][j-A[i]]
2.A[j]를 사용하지 않는 경우 - > A[i-1]까지의 동전을 사용하여 j원을 만들어야함 : D[i][j] += D[i-1][j]
D[i] += D[i-1][j-A[i]] + D[i-1][j] 이는 1+1+2, 2+1+1, 1+2+1를 모두 다른 경우로 친다.
그러므로 이를 막기 위해 D[i] += D[i-A[j]]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> using namespace std; int n, k, a[101], d[10001]; int main() { cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i]; d[0] = 1; for (int i = 1; i <= n; i++) for (int j = 0; j <= k; j++) { if (a[i] <= j) d[j] += d[j - a[i]]; } cout << d[k]; } | cs |
'Algorithm' 카테고리의 다른 글
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1766번:문제집 답 (0) | 2017.02.16 |
---|---|
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2294번:동전2 답 (0) | 2017.02.15 |
(C++) - 백준(BOJ) 11403 : 경로 찾기(BFS) 답 (2) | 2017.02.15 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11403번:경로 찾기(DFS) 답 (0) | 2017.02.15 |
(C++) - 백준(BOJ) 11723 : 집합 (0) | 2017.02.14 |