相同球放不同箱子,且箱子规格不同

现共有甲、乙两种规格箱子,5个甲箱子,3个乙箱子,且8个箱子各有其编号,其中甲箱子最多能放3个球,乙箱子最多能放一个球,将九个相同的球放在箱子中,有多少种分发,用JAVA程序编写。(箱子可以为空)

这是简单的数学题,用组合数就能求出来.
首先,不可能所有的都是乙箱子.
那么就可以 写成 都是 甲箱子. 9个球,放3个箱子 , c53
9个球,放4个箱子 , c54, 只有3,3,2,1; 3,2,2,2的放法 所以是 c54*2*a44的放法.
以此类推.

我现在用的是8层for循环,但是只能解决这一个问题,如果箱子数量变换,函数还需要重写,希望能找到一个通用的算法,不管箱子和球哪个数量变化,只需要改下变量就可执行的算法

5个甲箱子,
3个乙箱子,
且8个箱子各有其编号,
其中甲箱子最多能放3个球,
乙箱子最多能放一个球,将九个相同的球放在箱子中,有多少种分发

定义五个 集合能放3个值,三个集合能放1个值,然后循环不同的 add即可