#4438. 零钱兑换

零钱兑换

题目描述

给你一个大小为 nn 的整数数组 coinscoins ,表示不同面额的硬币;以及一个整数 amountamount ,表示总金额。

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

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

输入格式

第一行两个空格隔开的整数,nnamountamount; 第二行 nn 个空格隔开的整数,表示 coinsicoins_i.

输出格式

一行一个数,表示答案。

样例

示例 1:

输入:

3 11
1 2 5

输出:

3

解释:11 = 5 + 5 + 1

示例 2:

输入:

1 3
2

输出:

-1

示例 3:

输入:

1 0
1

输出:

0

提示:

  • 1<=n<=121 <= n <= 12
  • 1<=coinsi<=23111 <= coins_i <= 2^{31} - 1
  • 0<=amount<=1040 <= amount <= 10^4