騰訊筆試題:小Q的歌單解析

題目描述:?

? ? ? ?小Q有X首長度為A的不同的歌和Y首長度為B的不同的歌,現(xiàn)在小Q想用這些歌組成一個(gè)總長度正好為K的歌單,每首歌最多只能在歌單中出現(xiàn)一次,在不考慮歌單內(nèi)歌曲的先后順序的情況下,請問有多少種組成歌單的方法。

了解題意以后我們先來學(xué)習(xí)一下關(guān)于二項(xiàng)式系數(shù)、排列組合、楊輝三角形的有關(guān)知識(shí):

1、二項(xiàng)式系數(shù)

2、楊輝三角形

3、楊輝三角形與二項(xiàng)式系數(shù)的關(guān)系

【奇妙的楊輝三角與二項(xiàng)式系數(shù)】- 圖解高中數(shù)學(xué)

楊輝三角形每一行數(shù)字都與二項(xiàng)式展開后系數(shù)相聯(lián)系。

????????其中 n 代表在楊輝三角上行數(shù), 且初始值為 0. 當(dāng) n 等于不同的整數(shù)展開多項(xiàng)式, 得到的每一項(xiàng)的系數(shù), 都會(huì)跟楊輝三角對(duì)應(yīng)行數(shù)的一整行數(shù)字完全一致。

4、排列組合

我把重點(diǎn)摘下來了(摘自知乎):如何通俗的解釋排列公式和組合公式的含義?

5、筆試題分析

? ??????分析:這道題比較好的處理方法也最容易理解的是用組合數(shù)來求解,說到組合數(shù)就很容易想到這道題和我們高中做的從兩個(gè)盒子里取小球的排列組合題。

????????此題可以轉(zhuǎn)換為這樣一道數(shù)學(xué)題,有兩個(gè)盒子,一個(gè)盒子里裝有3個(gè)紅球,一個(gè)盒子里裝有3個(gè)白球,紅球代表2分,白球代表3分,則從兩個(gè)盒子中任意拿球使其分?jǐn)?shù)等于9的拿法有多少種。

????????這樣就會(huì)想如果拿了0個(gè)紅球,白球有多少種拿法,如果拿了1個(gè)、2個(gè)、3個(gè)紅球,白球各有多少種拿法。

????????再者,將球的數(shù)量和球的分?jǐn)?shù)換成未知的量:即有兩個(gè)盒子,一個(gè)盒子里裝有X個(gè)紅球,一個(gè)盒子里裝有Y個(gè)白球,紅球代表A分,白球代表B分,則從兩個(gè)盒子中任意拿球使其分?jǐn)?shù)等于K的拿法有多少種。很顯然就和面試題一樣了,可以想到假設(shè)拿了 i 個(gè)紅球( i ?<= X),需要滿足條件( i * A?<= K : 分?jǐn)?shù)不能超過K)&&(( K - i* A)% B == 0 ?:確保分?jǐn)?shù)相加等于K) && ?(( K - i* A)/ ?B ?<= Y ?:不能超過白球的數(shù)目),將滿足條件的結(jié)果相加起來就是最后的結(jié)果。

????????而當(dāng)滿足條件后從各自的盒子里拿球就有不同的拿法,是很典型的排列組合問題,對(duì)于這道題我們可以建一個(gè)二維數(shù)組來存這些組合數(shù),行標(biāo)代表排列組合公式的下標(biāo),列標(biāo)代表排列組合公式的上標(biāo),具體的存法和楊輝三角有些類似

接下來我們看筆試題C語言代碼:

運(yùn)行結(jié)果:

java代碼:

運(yùn)行結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容