Dota中卡爾技能總數的組合數量

2021-09-13 03:42:58 字數 1008 閱讀 9147

問題:

在遊戲dota2中,有一位非常強大的英雄:卡爾,他有三種屬性:冰 火 雷. 同時卡爾身上有三個無順序的屬性槽, 他可以從三種屬性中任意選擇3個放入屬性槽中,然後通過當前的屬性組合召喚技能. 每種不同的屬性組合 都可以為卡爾召喚出不同的技能,共有10種組合:

1 冰冰冰

2 冰**

3 冰冰雷

4 **火

5 **雷

6 冰雷雷

7 火火火

8 火火雷

9 火雷雷

10 雷雷雷

現在我們想繼續加強卡爾,如果給卡爾四種屬性: 冰 火 雷 風,同時給卡爾四個無順序的屬性槽,從而讓卡爾可以從四種屬性中任意選擇四個,則請問卡爾共 可以召喚出多少種不同的技能?

想法:1 列舉法 

四屬性均相同的數目: 4

僅有三屬性相同的數目: 4*3=12

二屬性相同的數目: 4*3*2 - 4*3/2 = 24-6=18

一屬性相同的數目: 1

總數為35

寫了個**驗證下:

2  其實是個定理: n個元素的集合中,允許重複的r組合有 c(n+r-1,r) 個

允許重複時,n 元素集合的r組合 可以用 n-1 個豎線 和 r顆星 來表示. 這 n-1 條豎線用來標識n個不同的單元. 每當集合的第i個元素出現在組合中,第i個單元就包含1顆星.  

例如4元素的5組合 就可以用 3條豎線,5顆星來表示:    *|*|**|*

代表含: 第一元素1個,第二元素1個,第三元素2個,第四元素1個.

則: 包含n-1條豎線和r顆星的每一種表示 對應了 n個元素允許重複的r組合,個數為: c(n+r-1,r)  (n+r-1個位置選出r個位置放r個星)

則卡爾的三屬性技能數(n=3,r=3)為: c(3+3-1,3)=c(5,3)=10

卡爾的四屬性技能數(n=4,r=4)為:c(7,4)=35.

Dota英雄卡爾有多少個技能?

include include unsigned int skill unsigned int elem num,unsigned int slot num else if elem num 1 if slot num 0 else if slot num 1 分情況討論 如果已知第i種元素佔0個槽...

xdoj1057 卡爾的技能

時間限制 1 sec 記憶體限制 128 mb 提交 120 解決 51 提交 狀態 討論版 dota中的英雄卡爾的技能說明如下,他擁有3種不同的元素 冰,雷,火 每次他需要釋放技能的時候,他要先選擇3次元素來決定釋放技能的型別 比如,他可以選擇火 火 火或冰 雷 火等等 生成技能的型別由選擇的元素...

hive中的笛卡爾積

hive本身是不支援笛卡爾積的,不能用select t1.t2.from table 1,table 2這種語法。但有時候確實需要用到笛卡爾積的時候,可以用下面的語法來實現同樣的效果 select t1.t2.from select from table1 t1 join select from t...