给定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 = map(int, input().split())coins = []for _ in range(n):k_i, x_i = map(int, input().split())coins.append((k_i, x_i))# 初始化dp数组,值为一个大数,这里用k+1,因为最多不会超过k个硬币dp = [float('inf')] * (k + 1)dp[0] = 0 # 凑出金额0需要0个硬币# 存储每个金额的硬币使用情况coin_use = [[0] * n fo