#minimum number of ways coin change dynamic programming python3
def count(arr,amount,n,dp):
if (amount == 0):
return 1
if (amount < 0):
return 0
if (n==0):
return 0
if arr[n-1]<=amount:
dp[amount][n]=min(1+count(arr,amount-arr[n-1],n,dp),count(arr,amount,n - 1,dp))
return dp[amount][n]
else:
return count(arr,amount,n-1,dp)
arr = [1, 2, 3,6]
n= len(arr)
amount=2
dp=[[-1 for _ in range(m+1)]for _ in range(amount+1)]
print(count(arr,amount,n,dp))