前兩天好基友乘坐飛機去外地開年會,估計公司怕他們坐飛機實在太無聊,給他們搞了幾道思考題。學習
在此我分享一下這道題目,以及答題思路。請先看題目內容。我直接上圖片了,真的懶得打字呀~~~。優化
首先想到的是最直接的方法,找出各類分類,並累加各類分類模式的總數便可。spa
對於5種兵種,其形式可分爲:圖片
1 1 1 1 1 (陣容爲同樣一個) 對此形式總數爲 1 ,從5個兵種中取出5個兵種, 組合數爲C55.get
5 (陣容爲同一兵種) 對此形式總數爲5 ,從5個兵種中取出1個兵種,組合數爲C51.it
2 2 1 (2個某兵種,2個某其餘兵種,1個某其餘兵種) 對此形式總數爲 30,組合數爲C51 * C41 * C31 / 2. (這裏須要除以2 ,要去除221中22引發的重複)擴展
2 3 (請腦補)對此形式總數爲20,組合數爲C51 * C41.方法
1 4 (請腦補) 對此形式總數爲20,組合數爲C51 * C41.im
1 1 1 2 (請腦補)對此形式總數爲20,組合數爲C51 * C41 * C31 * C21 / 6.(這裏須要除以6 ,要去除1112中111引發的重複)img
1 3 1 (請腦補)對此形式總數爲30,組合數爲C51 * C41 * C31 /2. (這裏須要除以2 ,要去除131中1 1引發的重複)
一共爲 1 + 5 + 30 + 30 + 20 + 20 + 20 = 126.
理論上此題目已經解決,可是尚未抽取出能夠擴展的規律。也就是說還有找到解決問題的通式。進一步思考,想到了高中時學習的插空法。嗯,可用此法優化解題思路。
5個兵種槽位之間有4個空,插空即便將槽位進行分類。分類方式爲插零個空C40(不分),插一個空C41(分紅兩部分),兩個空C42(分紅三部分),三個空C43(分紅四部分),四個空C44(分紅五部分)。
以分紅兩部分爲例:
C41 * C52 :C52的意思爲從5個兵種中任取2個兵種。將兩個兵種分配到C41個槽模式下,總數爲40.
最終總數爲:
C40*C51 + C41*C52 + C42*C53 + C43*C54 + C44*C55 = 5 + 40 + 60 + 20 + 1 = 126 (1)
將組合式(1)進行以下變換獲得組合式(2)
C44*C51 + C43*C52 + C42*C53 + C41*C54 + C40*C55 (2)
組合式(2)能夠縮寫爲 並可改寫爲C95,9 爲(5 - 1) + 5 也就是槽數 -1 + 兵種數,5 爲 兵種數。
因此相似問題都可用一個組合數來表示。妙哉!~ 擴展公式爲 n爲兵種槽數,m爲兵種數
最後,我基友告訴我其實我推出了一個 公式。。。。
還有一個巧妙的思路,能夠直接得出C94的答案,在這裏我就不介紹了,方法總比問題多,僅在這裏拋磚引玉,若是錯誤請你們批評指正。謝謝。