Dota中卡尔技能总数的组合数量

问题:

在游戏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.

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值