#P5971. [CTSC2009] 移盘子
[CTSC2009] 移盘子
题目描述
已知有三根柱子,分别记为 , 和 。初始状态时 上放有 个盘子,而 和 两个柱子上没有放任何盘子。你每次能做的移动操作就是把某根柱子最上面的一个盘子拿下来,然后放到另一个柱子上。盘子有三类,分别用 , , 来表示。你的目标是,让所有 类盘子最终放在 上,让所有 类盘子最终放在 上,所有 类盘子最终放在 上。现在让你求出实现上述目标总共最少需要多少次移动?
输入格式
输入文件 trique.in 第一行包含一个整数 ,为盘子的总数。 第二行有 个数,每个数只能是 , , 之一。这 个数表示在初始状态时第一个柱子上所有盘子的类型,按照从上往下的顺序。
输出格式
输出文件 trique.out 只包含一个数,即最少的移动次数。
5
1 2 1 3 3
8
提示
样例说明
初始状态如下图:
数据范围
对于 %的数据, 盘子的种类不超过 种;
对于 %的数据, ;
对于 %的数据, 。