数据结构(c语言)

来源:百度知道 编辑:UC知道 时间:2024/04/29 01:35:47
编号为1,2,3,4的四节火车通过一个栈式的列车调度站,可能得到的调度结果有哪些?如果有N列火车通过调度站,设计一个算法输出所有的调度结果.用C语言表示。

这个问题的算法要考虑周全,程序倒不复杂。以四节火车为例,
1,首先考虑四节火车进站的可能顺序有4!=24种可能。
2,出站时机有2^3=8种可能(以大写字母表入站,小写字母表出站):
出站发生一次有一种情况(ABCDdcba);
出站发生二次有三种情况(AaBCDdcb,ABbaCDdc,ABCcbaDd);
出站发生三次有三种情况(AaBbCDdc,AaBCcbDd,ABbaCcDd);
出站发生四次有一种情况(AaBbCcDd);
综上,四节火车的全部调度可能是4!×2^(4-1)=24*8=192种可能。
N节火车情况与此相似。
程序实现时可用循环或递归。

4节按照顺序每个只进一次,还都得出一次是吧,那多了:
1 2 3 4
1 32 4
1 432
21 3 4
21 43
2 31 4
2 3 41
2 431
321 4
4321