一、题目
二、示例
三、代码
def fun(m,n):
if m < 0 or n < 0:
return 0
elif m == 1 or n == 1:
return 1
else:
return fun(m, n-1) + fun(m-n, n)
while True:
try:
m_apple, n_dish = map(int, input().split())
print(fun(m_apple, n_dish))
except:
break
四、算法说明
- 假设有一个盘子为空,则
(m,n)
问题转化为将m
个苹果放在n-1
个盘子上,即求fun(m,n-1)
; - 假设所有盘子都装有苹果,则每个盘子上至少有一个苹果,即最多剩下
m-n
个苹果,问题转化为将m-n
个苹果放到n
个盘子上,即求fun(m-n,n)
; - 递归终止条件是,要么没有苹果或盘子,要么两者仅有
1
个。
胡萝卜
2022年3月10日13:50:15
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |