题解 | #放苹果#

放苹果

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

import sys

def count_apple_sets(apple_cnt, disk_cnt):
    if apple_cnt == 0 or disk_cnt == 1:
        return 1
    if disk_cnt > apple_cnt:
        return count_apple_sets(apple_cnt, apple_cnt)

    # 分放满盘子和没放满盘子两种情况
    return count_apple_sets(apple_cnt, disk_cnt - 1) + count_apple_sets(apple_cnt-disk_cnt, disk_cnt)

for line in sys.stdin:
    args = [int(item) for item in line.strip("/n").split(" ")]
    print(count_apple_sets(args[0], args[1]))

要点:

  • 当盘子的数量多余苹果的数量的时候, 多余的盘子的数量是不影响分配结果的
  • 这题采用递归的解法, 苹果的分配方式可以分为下列两种情况的和: 1. 每个盘子都放了苹果 2.不是每个盘子都放了苹果

全部评论

相关推荐

11-03 18:20
巨人网络_招聘
投递巨人网络等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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