当前位置:首页 > 编程笔记 > 正文
已解决

518. 零钱兑换II(完全背包问题)

来自网友在路上 11108110提问 提问时间:2023-11-19 16:58:42阅读次数: 110

最佳答案 问答题库1108位专家为你答疑解惑

题目

在这里插入图片描述

题解

class Solution:def change(self, amount: int, coins: List[int]) -> int:# 状态定义:dp[i][j]表示用前i种硬币,刚好凑齐面额j的方法有多少dp = [[0 for i in range(amount+1)] for j in range(len(coins)+1)]# base casefor i in range(len(coins)+1):dp[i][0] = 1# 状态转移for i in range(1, len(coins) + 1):for j in range(1, amount + 1):# 第i枚硬币的面值小于要凑齐的面额,可以选择「用」和「不用」# 注意这里的判断条件是>=,与背包问题里的>有区别。if j - coins[i-1] >= 0:dp[i][j] = dp[i-1][j] + dp[i][j - coins[i-1]]# 否则不能用else:dp[i][j] = dp[i-1][j]return dp[len(coins)][amount]
查看全文

99%的人还看了

相似问题

猜你感兴趣

版权申明

本文"518. 零钱兑换II(完全背包问题)":http://eshow365.cn/6-39467-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!