给定n种不同面值的硬币k_i和每种硬币的数量x_i以及一个总金额k,请编写一个程序计算最少需要几枚硬币凑出这个金额k,凑出的方案是什么? 如果凑不出则输出“凑不出”
输入描述:
第一行两个正整数,n和k 然后n行每行两个数k_i和x_i 表示k_i面值的硬币有x_i个,中间以空格分隔
输出描述:
第一行输出内容 最少需要x枚硬币凑出金额k
x是需要的最少硬币数,k是需要凑的金额值
第二行输出内容 方案是:
随后m行输出每种硬币的选择情况q个r元硬币
,m是方案中涉及到硬币的种类,q是本行输出的硬币种类的使用数量,r是本行输出硬币种类的面值。 输出是按硬币面值降序输出
输入样例:
3 15
10 2
5 3
1 4
输出样例:
少需要2枚硬币凑出金额15
方案是:
1个10元硬币
1个5元硬币
注:代码没有经过测试,只通过样例,如有问题请留言。
def min_coins(n, k, coins):
# dp数组表示金额i所需的最少硬币数,初始设为无穷大
dp = [float('inf')] * (k + 1)
# 组合数组,用于记录每个金额所