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