题解 | #放苹果#

放苹果

https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf



m , n = map(int,input().split())

a = [[0]*(n+1) for _ in range(m+1)]

for j in range(1,n+1):
    a[1][j] = 1
    a[0][j] =1

for i in range(1,m+1):
    a[i][1] = 1

for i in range(2,m+1):
    for j in range(2,n+1):
        if i<j:
            #至少存在一个空盘
            a[i][j] = a[i][j-1]
        else:
            #至少存在一个空盘a[i][j-1]
            #没有空盘 a[i-j][j]
            a[i][j] = a[i][j-1]+a[i-j][j]

print(a[m][n])
"""
好多人问为啥没管 5 1 1 和 1 5 1
不用管
5 1 1 本质上是7个果放3个盘的一种场景
但是我们算7个果放3个盘是这样算的 分类讨论
1.存在一个空盘 比如 7 0 0    5 2 0
本质上是7个果放2个盘再加一个0盘  = a[i][j-1]
2.不存在一个空盘 比如5 1 1 
相当于是 1 1 1 上再分配4 = 7-3个苹果 = 4个果分3个盘的情况 = a[i-j][j]

我们默认4个果3个盘是动态规划中已经到达过的节点,
所以4个果3个盘的分配中 不存在 4 0 0  和 0 4 0 两种 
所以4个果分3个盘 衍生出来的不存在一个空盘的7个果放3个盘场景也就不会有 5 1 1 和 1 5 1

"""

全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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