题解 | #兑换零钱(一)#

兑换零钱(一)

https://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45

比如

1,2,5

举例

1、比如要凑11元,金额加+1,凑不到金额则是-1,定义长度为12的数组,这个比较简单,比如dp[0]==0,dp[11]则为凑11元的数量

int[] dp =[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]

默认凑不到

2、首次遍历(为方便理解,单独遍历一次塞进去,注意边界值和数值)

凑1元,需要1张,dp[1]=1

凑2元,需要1张,dp[2]=1

凑5元,需要1张,dp[5]=1

dp =[-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1]

3、

dp[3],遍历,凑3元

dp[3]=dp[2]+1 or dp[1]+1

这里需要理解一下

dp[3]=dp[3-1]+1 = 2 or dp[3-2]+1

3元-1元=2元,也就是用1张2元+1元(1张)

3元-2元=1元,也就是用1张1元+2元(1张)

这里也有前提,如果dp[2]为-1怎么算

dp[3] 默认值为-1

dp[3-1]+1 = 2

dp[3-2]+1 = 2

最终dp[3]=2

dp[4] = dp[4-1]+1(3) or dp[4-2]+1 (2)

最终dp[4]=2

全部评论

相关推荐

12-19 20:28
已编辑
门头沟学院 Java
美团履约 全栈工程师 (n+1)*15.5 其他
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务