按目标从底到顶依次“定格”每个目标元素 x
:
next
扔到堆叠区(执行 In
),直到把 x
压入栈顶。next != x
),立刻执行一次 Out
丢弃,保证不会破坏已定格的下层结构。x
时,不再 Out
,保留在栈中,进入下一个目标。有玩过叠叠高游戏么。
假设,预定给出一组积木,为其编号 list=[1,2,3,...,n] 。
游戏只有两种操作,所有的积木都是按顺序放在预备区。
积木可以放到预备区和堆叠区,在这两个区域里面,要必须先拿最上面的积木才能拿下面的积木。
第一种 In ,表示把积木从预备区拿到堆叠区。
第二种 Out ,表示把积木从堆叠区拿走并丢弃。
给定一个结束状态,求能通过 In 和 Out 的操作序列,得出该结束状态。
输入第一行为 n 和 m ,表示积木的总数目和目标积木的数量;
输入第二行为 m 个数,为目标积木排列;
最多有 100 个积木。
输出一行为操作序列,用 ,
隔开输出保证合法。
输入
3 2
1 3
输出
In,In,Out,In
说明
读取数字 1 ,将 1 移到堆叠区中 [1]
读取数字 2 ,将 2 移到堆叠区中 [1,2] ,然后将其 Out ,现在堆叠区为 [1]
读取数字 3 ,将 3 移动堆叠区中 [1,3]
输入
3 3
1 2 3
输出
In,In,In
输入
4 2
1 2
输出
In,In
说明
放了 1 和 2 之后即可停止。