超简易调度算法描述 - pfjhyyj/TrainDispatchKit GitHub Wiki
超简易调度算法描述
可用操作
-
让序列头部的某一火车进入任意栈中, 可以是原有的栈也可以是新开辟的栈
-
弹出某一栈中的栈顶的火车
目标
所有的火车以n, n-1, n-2, ..., 2, 1的顺序依次从栈中弹出
步骤
火车调度必须按照以下规则进行
如果某个栈中的栈顶编号与当前所需的编号相等(栈顶火车编号等于当前栈中所有火车编号的最大值), 弹出该火车
当无法从栈中弹出火车时, 将处于入轨火车序列首位的火车压入某一栈中
“某一栈”的定义为, 按照栈被开辟的先后次序, 以由先至后的方式依次检查栈顶火车的编号, 找到第一个栈顶火车编号小于待入栈的火车编号的栈, 将火车压入该栈, 若所有栈均不满足条件, 开辟新栈并将火车压入该栈
总结与问题
这样的方法是以贪心的方法每次寻求对于序列中首个火车的最优解, 此最优解是否为整体的最优解? 如果否, 请举出某一具体反例?
换句话说, 是否可以通过考虑整体火车序列的排列情况, 来寻求一个使用栈的数量更少的解?