mid-硬币找零

该博客介绍了一个找零问题的算法,给定不同面值的硬币及其数量及目标金额,求最少需要多少枚硬币凑出目标金额。输入包括硬币面值和数量,输出为最少硬币数及具体方案。样例输入为3种硬币面值和数量,目标金额15,输出显示最少需要2枚硬币,分别是1个10元和1个5元硬币。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定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)
    # 组合数组,用于记录每个金额所
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值