题解 | #放苹果#
放苹果
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.不是每个盘子都放了苹果

基恩士成长空间 426人发布