题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
''' 思路:定义函数f(m,n)表示将m个苹果放入n个盘子的方法数。找到递推公式和初始条件。 对于m个苹果放进n个盘子的情况,有以下约束。 1.如果m<0,脱离数据范围,返回0 2.如果m==1或n==1,即m个苹果放到1个盘子或者1个苹果放到n个盘子里,按题意为1种结果,返回1 3.如果m>1,n>1,那么可以找到两种子情况进行递推。 A:存在盘子是空的,那么此时的分配方法数为f(m,n-1),即把m个苹果放入其余n-1个盘子里。 B:所有盘子都有苹果,那么此时的分配方法数为f(m-n,n),即每个盘子都去掉1个苹果,将剩余m-n个苹果放入n个盘子里。 于是,我们得到递推式f(m,n)=f(m,n-1)+f(m-n,n) ''' import sys def assign(m,n): if m < 0: return 0 elif m==1 or n==1: return 1 else: return assign(m,n-1) + assign(m-n,n) m,n = map(int,input().split()) print(assign(m,n))