一道游戲設計趣題


題目

前兩天好基友乘坐飛機去外地開年會,估計公司怕他們坐飛機實在太無聊,給他們搞了幾道思考題。

在此我分享一下這道題目,以及答題思路。請先看題目內容。我直接上圖片了,真的懶得打字呀~~~。

接下來分享一下解題思路:

首先想到的是最直接的方法,找出各種分類,並累加各種分類模式的總數即可。

對於5種兵種,其形式可分為:

1 1 1 1 1 (陣容為一樣一個)     對此形式總數為 1 ,從5個兵種中取出5個兵種, 組合數為C55.

5             (陣容為同一兵種)     對此形式總數為5 ,從5個兵種中取出1個兵種,組合數為C51.

2 2 1       (2個某兵種,2個某其他兵種,1個某其他兵種) 對此形式總數為 30,組合數為C51 * C41 * C31 / 2. (這里需要除以2 ,要去除221中22引起的重復)

2 3          (請腦補)對此形式總數為20,組合數為C51 * C41.

1 4          (請腦補) 對此形式總數為20,組合數為C51 * C41.

1 1 1 2    (請腦補)對此形式總數為20,組合數為C51 * C41 * C31 * C21 / 6.(這里需要除以6 ,要去除1112中111引起的重復)

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的答案,在這里我就不介紹了,方法總比問題多,僅在這里拋磚引玉,如果錯誤請大家批評指正。謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM