Question: 
Write a function to find minimum number of coins that make a given value.


Model's Code:
def min_coins(coins, n, value):
    dp = [float('inf')] * (value + 1)
    dp[0] = 0
    
    for i in range(1, value + 1):
        for coin in coins:
            if i >= coin:
                dp[i] = min(dp[i], dp[i - coin] + 1)
    
    return dp[value] if dp[value] != float('inf') else -1



Sample Correct Code:
import sys 
def min_coins(coins, m, V): 
    if (V == 0): 
        return 0
    res = sys.maxsize 
    for i in range(0, m): 
        if (coins[i] <= V): 
            sub_res = min_coins(coins, m, V-coins[i]) 
            if (sub_res != sys.maxsize and sub_res + 1 < res): 
                res = sub_res + 1  
    return res 


Asserts:
assert min_coins([9, 6, 5, 1] ,4,11)==2
assert min_coins([4,5,6,7,8,9],6,9)==1
assert min_coins([1, 2, 3],3,4)==2


Tests:
Test 1 of 3: PASS
Test 2 of 3: PASS
Test 3 of 3: PASS

Test 531 of 974: 391/531 (73.6346516007533%): success