python 两种数量的丸子分到K个碗

遇到笔试题如下:
M个鱼丸,N个肉丸,K个碗,所有丸子都分到碗中,不能混装,可以有空碗。
数据:1≤M≤50,1≤N≤50,1≤K≤50,一个碗可以放任意多的丸子
比如 鱼丸1,肉丸1,碗3,分法(1,0,1)(1,1,0)(0,1,1)算一种分法。

print("输入鱼丸数量M,1≤M≤50")
M = int(input())
print("输入鱼丸数量N,1≤N≤50")
N = int(input())
print("输入碗数量K,1≤K≤50")
K = int(input())# m个丸子放入n个碗的分法,允许有空
def fun1(m,n):if m == 0 or n == 1:return 1if n > m:return fun1(m, m)else:return fun1(m, n-1) +fun1(m-n, n)# m个丸子放入n个碗的分法,不允许有空
def fun2(m,n):if m == n:return 1if m > n:return fun1(m-n,n)if m < n:return 0def fun3(M,N,K):num = 0if K <= 1:return 0else:for i in range(1, K):   # 给1~k+1个碗分丸子,i个碗分M鱼丸,K+1-i个碗分N肉丸num1 = fun2(M,i)num2 = fun1(N, K-i)num += num1*num2return numif __name__ == "__main__":num =fun3(M,N,K)
print("分法有 %d 种" % num)

想了一天,感觉这下应该是没有错的了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部