fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int coins[100];
  4. int amount,n;
  5. int dp[100][1000];
  6. int coin_change(int i,int amount)
  7. {
  8. if(i==n)
  9. {
  10. if(amount==0)
  11. return 0;
  12. else
  13. return 1000;
  14. }
  15. if(dp[i][amount]!=-1)
  16. {
  17. return dp[i][amount];
  18. }
  19. if(amount>=coins[i])
  20. {
  21. int niye=1+coin_change(i+1,amount-coins[i]);
  22. int naniye=coin_change(i+1,amount);
  23. return min(niye,naniye);
  24. }
  25. else
  26. {
  27. return coin_change(i+1,amount);
  28. }
  29. }
  30. int main()
  31. {
  32. cin>>n;
  33. for(int i=0;i<n;i++)
  34. {
  35. cin>>coins[i];
  36. }
  37. cin>>amount;
  38. for(int i=0;i<=n;i++)
  39. {
  40. for(int j=0;j<=amount;j++)
  41. {
  42. dp[i][j]=-1;
  43. }
  44. }
  45. int min_coins=coin_change(0,amount);
  46. if(min_coins>=1000)
  47. cout<<"Not Possible "<<endl;
  48. else
  49. cout<<min_coins<<endl;
  50. }
Success #stdin #stdout 0.01s 5292KB
stdin
5
3 12 1 6 9
11
stdout
Not Possible