#GESP6DP03. 最少硬币数量

最少硬币数量

题目描述

nn 种面值不同的硬币,每种硬币都可以使用任意多枚。给定目标金额 mm,请计算凑出金额 mm 至少需要多少枚硬币。如果无法凑出,输出 -1。

输入格式

第一行输入两个整数 nnmm

第二行输入 nn 个正整数,表示每种硬币的面值。

输出格式

输出一个整数,表示凑出金额 mm 至少需要的硬币数量;如果无法凑出,输出 -1。

输入输出样例

输入

3 11
1 2 5

输出

3

数据范围与提示

对于全部数据,1n1001 \le n \le 1001m100001 \le m \le 10000,硬币面值不超过 1000010000

可以令 dp[i]dp[i] 表示凑出金额 ii 所需的最少硬币数。初始时 dp[0]=0dp[0]=0,其他位置设为一个很大的数。枚举每种硬币面值 cc,用 dp[ic]+1dp[i-c]+1 更新 dp[i]dp[i]

来源

GESP 6 级动态规划训练。

蜀ICP备2025119001号-1