CodeACM
HOT 100 · 动态规划 · LC 322

零钱兑换:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

输入格式

第一行输入 n 和 amount,第二行输入 n 个面额。

输出格式

输出最少硬币数,无法凑成时输出 −1。

数据范围

  • 1 ≤ n ≤ 12
  • 0 ≤ amount ≤ 10⁴

公开样例

样例 1

输入

3 11
1 2 5

输出

3

11 = 5 + 5 + 1,共使用 3 枚硬币。

样例 2

输入

1 3
2

输出

-1

无法凑成 3。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。