把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。
数据范围: 0≤m≤10 ,1≤n≤10
输入:7 3 输出:8
#使用递归
#主要考虑两种情况,盘子为空与盘子不为空
#当盘子数量为1时,只有1种放法
#当苹果数量小于盘子数量时,盘子必然至少有一个为空
#当苹果数量大于等于盘子数量时,就需要考虑两种情况,盘子为空与盘子不为空
import sys
def count_ways(m, n):
if n==1:
total_ways = 1
elif m < n:
total_ways = count_ways(m, n - 1)
else:
ways_with_empty_plate = count_ways(m, n - 1)
ways_with_apple = count_ways(m - n, n)
total_ways = ways_with_empty_plate + ways_with_apple
return total_ways
for line in sys.stdin:
a = line.split()
print(count_ways(int(a[0]),int(a[1])))