我们可以通过动态规划来解决这个问题,目标是找到组成指定金额 aim 的最少货币数。我们将利用一个动态规划数组 dp 来存储每个金额对应的最小货币数量。 动态规划思路 定义状态: 定义一个数组 dp,其中 dp[i] 表示组成金额 i 所需的最少货币数。 初始化: dp[0] = 0,表示金额为 0 时不需要任何货币。 对于其他金额,初始值设置为一个很大的数(比如 Integer.MAX_VALUE),表示暂时无法组成这些金额。 状态转移: 对于每种货币面值 coin,我们遍历 dp 数组从 coin 到 aim,更新 dp[i]: 如果使用当前的面值 coin,那么可以...