序号 | 标题 | 作者 | 发表时间 | 费用 | 订购数 | 操作 |
---|
给定一叠煎饼(n<=30),你要写一个程序计算出如何才能使这叠煎饼自底向上由大至小的排列。给定煎饼的半径作为其尺寸,一叠煎饼的大小各不相同。
为煎饼叠排序是通过一些列的“翻转”动作来完成的。一个翻转动作就是将一个小铲插到煎饼叠中的某两个煎饼之间,然后将小铲上面的所有煎饼翻转(倒转小铲上面的子栈)。每个翻转动作由其开始的位置给出,即小铲上面子栈中最底下一个煎饼的编号。整叠煎饼中最下面一个的位置为1,n个煎饼的叠中最上面一个的位置为n。
一个煎饼叠由一组表示其中各煎饼直径的数构成,它们排列的顺序就是给出的这些数的顺序。
比如下面三个煎饼叠(煎饼8是左边一叠的最上面的一个)
8 7 2
4 6 5
6 4 8
7 8 4
5 5 6
2 2 7
左边一叠可以通过翻转第3个煎饼变成中间一叠的顺序。中间一叠可以通过翻转第1个煎饼变成右边一叠的顺序。