KY61 放苹果

KY61 放苹果

# KY41 放苹果
# M个苹果,N个盘子,苹果和盘子都没有区别
# 将苹果放入盘子,允许有空盘,问有多少种放法?
# 动态规划解法: 
# 令dp[disk][apple] = 苹果apple个,盘子有disk个
# 所有放法中有两种情形:
# 情形一: 不含有空盘,则放法总数为: dp[disk][apple-disk]
# 情形二: 存在至少一个空盘,则放法总数为: dp[disk-1][apple]
# 边界条件:  dp[0][0] = 1, 
#           dp[0][j] = 0, j>0
#           dp[i][0] = 1, i>0

dp = [[0 for i in range(21)] for j in range(21)]
dp[0][0] = 1
for diskNum in range(1, 21):
    for appleNum in range(0, 21):
        if diskNum > appleNum:  # disk > apple
            dp[diskNum][appleNum] = dp[diskNum-1][appleNum]
        else:  # disk <= apple
            dp[diskNum][appleNum] = dp[diskNum][appleNum-diskNum] + dp[diskNum-1][appleNum]

if __name__ == '__main__':
    try:
        while True:
            appleNum, diskNum = map(int, input().strip().split())
            print(dp[diskNum][appleNum])
    except EOFError:
        pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值