K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
该问题背景为:给定若干种不同面值的硬币,每种硬币可无限次选取,目标是凑出指定总金额的前提下,使用的硬币总数量最少。
可以定义状态dp[i]表示凑出金额i所需的最少硬币数量,初始时dp[0] = 0,其余dp[i]需初始化为一个足够大的数(如总金额+1)表示初始不可达
状态转移方程可写为dp[i] = min(dp[i], dp[i - coin] + 1),其中coin为当前枚举的硬币面值,仅当i >= coin时该转移有效
求解该问题时必须固定「先遍历所有硬币,再从小到大遍历金额」的顺序,调换遍历顺序会得到错误结果
若目标金额大于0,且所有硬币面值均大于目标金额,则不存在合法的凑钱方案