目录
主题说明
把m个相同的苹果分成n个相同的篮子,允许篮子空着,求共有几种不同的分法。
说明,3、1、1和1、3、1是分法; 放在篮子里的苹果数量没有最大的限制。
输入/输出说明
输入:两个整数m和n,例如7 3
输出:一个整数k表示共k种苹果的分法。
主题分析
假设篮子数量和苹果数量足够多,输入是合法的。 当苹果数量少于篮子数量时,至少有basket - apple个篮子是空的。 也就是说,这部分的篮子是多余的,去除它们对结果没有任何影响。
苹果数量多于篮子的情况下,由于没有规定放在篮子里的苹果上限,所以篮子里可以放无数个苹果,也可以空出来。 因此,在这种情况下,分苹果的方法是所有篮子里有苹果和保证篮子是空的两种种子情况的总和。
进一步分析,所有篮子里都允许有苹果:
所有的篮子都有苹果,所以从每个篮子里摘苹果不会影响计算结果,可以简化问题的规模。 因此,在这种情况下,apple和basket的区分方法等于apple - basket和basket。
允许笼子空着:
这种情况可以理解到至少有一个篮子空着,至少有两个篮子空着.只有一个篮子可以放苹果。 所有这些可能性加在一起的是这个孩子的划分方法的总数。
接下来讨论临界情况。 没有苹果或者只剩下一个篮子的时候,这个时候只有一个方法。
异常情况:苹果和篮子数量小于0,这种情况无法区分。
代码显示
efshare(apple,basket ) :
if apple 0 or basket=0:
返回0
elif apple==0 or basket==1:
返回1
elif apple basket:
返回共享(应用,应用) )。
else:
返回共享(apple,basket - 1 ) share (apple-basket,basket ) )。
echo=list (映射(int,input ).split ) )
apple=echo[0]
basket=echo[1]
打印(share (apple,basket ) )
接送门
1. input ) )函数
2. split ()函数
3. int ) )函数
4 .映射) )函数
5. list (函数
6. print (函数