* Computer Science/Algorithm

baekjun coin1, coin2

soicem 2018. 11. 2. 17:57

a[i] += a[i - coin[j]] : 경우의수

a[i] = a[i - coin[j]] + 1 : 최소 동전수


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;
 
int coins[101];
int d[10001];
int main(){
    int N, M;
    cin >> N >> M;
    for(int i = 1; i <= N; i++){
        cin >> coins[i];
    }
    for(int i = 0; i<= M; i++){
        d[i] = -1;
    }
    d[0= 0;
    for(int i = 1; i <= N; i++){
        for(int j = 1; j <= M; j++){
            if(j - coins[i] >= 0 && d[j - coins[i]] != -1){
                if(d[j] == -1 || d[j] > d[j - coins[i]] + 1){
                    d[j] = d[j - coins[i]] + 1;
                }
            }
        }
    }
    cout << d[M];
    return 0;
}
 
cs



'* Computer Science > Algorithm' 카테고리의 다른 글

baekjun 행렬의 곱셈순서  (0) 2018.11.02
baekjun 팰린드롬 분할  (0) 2018.11.02
baekjun 10942. 팰린드롬?  (0) 2018.10.31
baekjun 1890. jump  (0) 2018.10.30
baekjun 2178. 미로탐색  (0) 2018.10.30