【力扣322】零钱兑换
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。
你可以认为每种硬币的数量是无限的。
dfs(i, n):前i种面额的硬币凑成金额n的最少硬币个数;
不选第i种:dfs(i-1, n);
选第i种:dfs(i, n-coins[i]) + 1
动态规划方程:dfs(i, n) = min(dfs(i-1, n), dfs(i, n-coins[i]) + 1);
超时;;;
自底向上: