技术问询:求解n辆汽车在4个平行加油机前的排队不同顺序数
咱们来一步步拆解这个问题哈——题目明确设定汽车和加油机都是可区分的,每辆汽车只能排一个队,不管是选了不同加油机,还是同一加油机里的先后位置不同,都算不同的排队情况。
思路一:用“插空法”直观理解
一开始加油站有4个空队列,第一辆汽车来的时候,有4个位置可选(每个加油机的队首);
第二辆汽车来的时候,它可以插在所有现有队列的任意空隙里——包括4个队首,或者第一辆车的后面,总共是4+1=5个位置;
第三辆汽车来的时候,空隙数又多了1,变成5+1=6个位置;
以此类推,第n辆汽车来的时候,总共有 4 + (n-1) = n+3 个位置可选。
把每一步的可选位置数乘起来,就是总排队顺序数:4 × 5 × 6 × ... × (n+3)
这个乘积可以简化为阶乘形式:$\frac{(n+3)!}{3!}$(因为$(n+3)! = 1×2×3×4×...×(n+3)$,除以$3!$就剩下4到n+3的乘积)
思路二:等价转化为“排序加分隔”验证
我们也可以换个角度想:
- 先给n辆汽车排好一个总的顺序,这一步有
n!种方式; - 在这些汽车之间插入3个“分隔标记”——这3个标记会把整个序列分成4段,每一段对应一个加油机的队列(比如第一个分隔前的是加油机1的队列,分隔1和2之间的是加油机2的,以此类推)。
插入分隔标记的方式有多少种呢?n辆汽车之间有n+1个空隙(包括序列首尾),我们要选3个空隙放分隔标记(允许多个标记插在同一个空隙,对应某个加油机没有汽车),这种选法的数量是组合数 $\binom{n+3}{3}$,也就是 $\frac{(n+3)(n+2)(n+1)}{6}$。
把两步的结果相乘,总顺序数就是:n! × \binom{n+3}{3} = n! × \frac{(n+3)(n+2)(n+1)}{6} = \frac{(n+3)!}{3!}
和思路一的结果完全一致,验证了答案的正确性。
如果题目假设加油机是不可区分的,计算方式会不一样,但根据题目初始设定,咱们上面的结果就是正确的。
内容的提问来源于stack exchange,提问作者Karim Shoorbajee

