You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

字母排列技术咨询:含重复元素的单词计数及三类子问题求解

解决字母组合排列问题

嘿,我来帮你搞定这三个排列组合问题,不用从1字母到11字母逐一统计,用组合数学的方法就能快速算出结果!

问题(a):可生成多少个这样的单词?

这是典型的多重集合排列问题——因为存在重复字母,不能直接用全排列公式。总共有11个字母(4个A、3个B、2个C、1个D、1个E),计算公式为:
11! / (4! × 3! × 2! × 1! × 1!)
计算过程:

  • 11! = 39916800
  • 分母:4!×3!×2!×1!×1! = 24×6×2×1×1 = 288
  • 结果:39916800 ÷ 288 = 138600

所以一共可以生成138600个不同的单词。

问题(b):有多少个单词中没有B彼此相邻?

这里用插空法最适合,步骤如下:

  1. 先排列所有非B的字母:总共有4个A、2个C、1个D、1个E,共8个字母,它们的排列数为:
    8! / (4! × 2! × 1! × 1!) = 40320 / (24×2) = 840
  2. 这8个字母排列后,会形成9个空隙(包括首尾两端),比如 _ X _ X _ ... _ X _,我们需要从这9个空隙里选3个插入B(因为B是相同的,所以用组合数):
    C(9,3) = 9! / (3!×6!) = 84
  3. 把两个结果相乘,就是没有B相邻的单词总数:
    840 × 84 = 70560

所以符合条件的单词有70560个。

问题(c):有多少个单词中D出现在E之前?

这个问题不用复杂计算,利用对称性就能解决:
所有可能的单词里,D要么在E前面,要么在E后面,这两种情况是完全对称的,没有任何偏向性,所以两种情况的数量相等。直接把问题(a)的结果除以2即可:
138600 ÷ 2 = 69300

所以D出现在E之前的单词有69300个。

内容的提问来源于stack exchange,提问作者B.Li

火山引擎 最新活动