探索座位分配的奥秘
座位分配背景
当一家四口人出去玩在 12306 进行购票时,假定四个人都选择了商务座,你是想一家人被安排到各个不同的车厢还是在一个车厢不同座位还是一个车厢相邻座位?想都不用想,肯定是后者最好对不对。那如果要实现这个座位分配算法,却不是这么容易。
先放一张高铁商务座的座位分布图,复兴号商务座两排三座,一个车厢排除空座位,共 5 个可用座位,如下所示:

大家也可以去看下 12306 上实际购买复兴号高铁试试,一排三个座位,分别是 ACF。咱们系统都是严格按照原系统逻辑设计的。

座位分配难点
座位如果要想分配的合理,需要考虑的情况比较多,比如:
- 单个车厢可能容纳不下购票乘车人数;
- 单排座位可能容纳不下购票乘车人,需要根据不同座位类型拆成多排分配;
- 单个车厢可能容纳的下购票乘车人,但没有相邻座位;
- 选中座位类型车厢余量加一起都容纳不下购票乘车人的情况。