把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?

来源:互联网 发布:黑岩阅读软件 编辑:程序博客网 时间:2024/05/23 19:10
题目:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入描述第一行是测试数据输出描述对输入的每组数据M和N,用一行输出相应的K。输入例子17 3输出例子8
解题思路:
将这8组数分成2组第一组,可以发现最后一个数总是为0,其实可以理解成这一组数与m = 7,n = 2也是相等的7   0   06   1   05   2   04   3   0第二组,如果将每一个数都减1,可以发现,这组数的个数与m = 4,n = 3相等5   1   14   2   13   3   13   2   1
def apple_divide(m,n):    if m == 0 or n == 1 :        #如果,碟子只有1个,无论苹果有多少个都只有一种放法        return 1    if n > m :   #如果,碟子的个数大于苹果的个数        return apple_divide(m,m)    else :        return apple_divide(m,n-1) + apple_divide(m-n,n)if __name__=='__main__' :    result = apple_divide(7,3)    print(result)



阅读全文
0 0