add_coins.py 526 B

12345678910111213141516171819
  1. # Given a list of nums and a target s, find the minimum number of numbers from
  2. # the list that add up to s
  3. import pytest
  4. def test_add_coins():
  5. list = [1, 3, 5]
  6. s = 11
  7. assert add_coins(list,s) == 3
  8. def add_coins(list, s):
  9. if s < min(list) or s <= 0: return 0
  10. dp = [float('inf')] * (s+1)
  11. dp[0] = 0
  12. for i_s in range(s+1):
  13. for i_v in range(len(list)):
  14. if list[i_v] <= i_s and dp[i_s - list[i_v]] + 1 < dp[i_s]:
  15. dp[i_s] = dp[i_s - list[i_v]] + 1
  16. return dp[-1]