#P3460. [POI2007] TET-Tetris Attack
[POI2007] TET-Tetris Attack
题目描述
一种名为 Tetris Attack 的猜谜游戏风靡 Byteotia。游戏本身非常复杂,因此我们只介绍它的简化规则:
玩家拥有一个有 个元素的栈,一个元素放置在另一个元素上,这样一个组合有 个不同的符号标记。对于每个符号,栈中恰好有两个元素用一个符号标记。
玩家可以交换两个相邻元素,即互换他们的位置。交换后,如果有两个相邻的元素标有相同的符号,则将他们都从栈中删除。然后,位于其上方的所有元素都会掉落下来,并且可以造成再次删除。
玩家的目标是以最少的移动次数清空堆栈。请你编写一个程序,找出最少的移动次数及方案。
输入格式
第一行一个整数 。
接下来的 行里给出了栈的初始内容,第 行包含一个整数 (),表示从底部数起第 个元素所标记的符号(每个符号都在栈中出现正好两次)。
最初不存在相邻的两个元素符号相同的情况,保证有不超过 次操作的方案。
输出格式
第一行一个整数 ,表示最小的移动次数。
接下来 行,每行输出一个数。
第 行输出 ,即表示玩家在第 步时选择交换 与 。
如果存在多个方案,则输出其中任何一个。
5
5
2
3
1
4
1
4
3
5
2
2
5
2
提示