问题
先从一个问题引入:假如一个湖里有4种鱼,而我总共钓上来了10条鱼,请问鱼的组合共有多少种可能?(注意这个问题里某种鱼的条数可以为0)
更一般地,我们可以假设有r r种鱼,且一共钓到了条,那可能的结果数就是满足:
x1+x2+⋯+xr=n x 1 + x 2 + ⋯ + x r = n
的非负整数向量 (x1,x2,⋯,xr) ( x 1 , x 2 , ⋯ , x r )的个数。生活中经常会碰到类似的问题,所以就称呼为“不定方程非负整数解个数”问题。
解法
要计算非负整数向量的个数,我们可以先考虑正整数向量(x1,x2,⋯,xr) ( x 1 , x 2 , ⋯ , x r )的个数。我们假设有n个连续的数值1排成一行:
111⋯11 1 1 1 ⋯ 1 1
注意,总共有n-1个间隔,我们需要将r-1个加号放到这些间隔中。例如,如果 n=8,r=3 n = 8 , r = 3,那么选择
1+1111+111 1 + 1 1 1 1 + 1 1 1
对应解 x1=1,x2=4,x3=3 x 1 = 1 , x 2 = 4 , x 3 = 3。
结论1
共有Cr−1n−1 C n − 1 r − 1个不同的正整数向量(x1,x2,⋯,xr) ( x 1 , x 2 , ⋯ , x r )满足
x1+x2+⋯+xr=n xi>0,i=1,⋯,r x 1 + x 2 + ⋯ + x r = n x i > 0 , i = 1 , ⋯ , r
为了得到非负整数解(而不是正整数解)的个数,注意,x1+x2+⋯+xr=n x 1 + x 2 + ⋯ + x r = n的非负整数解个数与y1+y2+⋯+yr=n+r y 1 + y 2 + ⋯ + y r = n + r的正整数解个数是相同的(令yi=xi+1,i=1,⋯,r y i = x i + 1 , i = 1 , ⋯ , r)。因此得到结论2
结论2
共有Cr−1n+r−1 C n + r − 1 r − 1个不同的非负整数向量(x1,x2,⋯,xr) ( x 1 , x 2 , ⋯ , x r )满足
x1+x2+⋯+xr=n x 1 + x 2 + ⋯ + x r = n
所以回到最开始的问题,总共有C310+4−1=C313=286 C 10 + 4 − 1 3 = C 13 3 = 286中可能的情况
版权声明:本文为u012074597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。