Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int INF = 100000;
- int coin_change(int coins[], int value, int k)
- {
- int M[value+2];
- M[0] = 0;
- int used[value+2];
- used[0] = 0;
- for(int i=1;i<=value;i++)
- {
- int minimum = INF;
- int coin=0;
- for(int j=0;j<=k;j++)
- {
- if(i >= coins[j])
- {
- if((1+M[i-coins[j]]) < minimum)
- {
- minimum = 1+M[i-coins[j]];
- coin = j;
- }
- }
- }
- M[i] = minimum;
- used[i] = coin;
- }
- int l = value;
- while(l>0)
- {
- printf("%d\n",coins[used[l]]);
- l-=coins[used[l]];
- }
- return M[value];
- }
- int main()
- {
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- int n;
- cin >> n;
- int coins[n];
- for(int i=0;i<n;i++)
- cin >> coins[i];
- int value;
- cin >> value;
- cout << coin_change(coins, value, n-1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement