假設現在有p個球放入k個盒子中,對于球和盒子的屬性分別做限制,然后詢問方法數。這里的屬性限制分別包括:球是不是相同的,盒子是不是相同的,盒子是否為空。
首先看最簡單的情況:盒子可以為空,球和盒子都是不同的。那么一共有k ^ p種放法。如果規定盒子是非空的,那么就需要利用容斥原理,設第i個盒子是空的為一種屬性,那么分別計算一個盒子為空的方法數,兩個盒子為空。。。然后利用容斥原理就行了。
現在規定球是不同的,盒子是相同的且盒子不能為空。這是第二類stirling數,S(p, k) = k * S(p - 1, k) + S(p - 1, k - 1)。如果規定盒子可以為空,那么就是第p個Bell數,也就是對第二類stirling數k從0到k求和。
如果盒子相同,球也相同,這時候盒子空不空都無所謂了,就是一個整數劃分問題,非空的話先給每個盒子裝一個球再算就行了。
最后一種情況是盒子不同,球相同,如果盒子可以為空,那么問題就變成了經典的x1 + x2 + ... + xk = p,x取值范圍0到p的解的個數。這是經典的組合數學問題,利用隔板法求得答案是C(k + p - 1, p)。如果盒子非空,那么就是把x的取值范圍變成1到p就行了,答案是C(p - 1, p - k)。