给定:A-> L-> G-> O-> R-> I-> T-> H-> M-> U-> S
现在我必须给出最短的序列,该序列使用Move-To-Fron给我:
G-> L-> A-> M-> O-> R-> H-> I-> T-> U-> S
结果是:H,R,O,M,A,L,G
我可能会猜到,但是我只是缺乏系统的方法来解决这个问题。如果有人可以向我展示适当的流程,那就太好了。
答案 0 :(得分:2)
一切都只移到最前面。这意味着G
必须最后移动。将G
推入堆栈,然后忘记它。
结果字符串为ALORITHMUS
和LAMORHITUS
。
对于他们来说,L
必须最后移动。将其推入堆栈,然后忘记它。现在您有了AORITHMUS
和AMORHITUS
。
漂洗并重复,直到其余的字符串比较相等(不再需要移动)。最后的堆栈按正确的顺序包含结果。
比较时要小心。天真的实现会导致二次时间复杂度。有一种避免它的方法。