#P5971. [CTSC2009] 移盘子

[CTSC2009] 移盘子

题目描述

已知有三根柱子,分别记为 AABBCC。初始状态时 AA 上放有 NN 个盘子,而 BBCC 两个柱子上没有放任何盘子。你每次能做的移动操作就是把某根柱子最上面的一个盘子拿下来,然后放到另一个柱子上。盘子有三类,分别用 112233 来表示。你的目标是,让所有 11 类盘子最终放在 AA 上,让所有 22 类盘子最终放在 BB 上,所有 33 类盘子最终放在 CC 上。现在让你求出实现上述目标总共最少需要多少次移动?

输入格式

输入文件 trique.in 第一行包含一个整数 NN,为盘子的总数。 第二行有 NN 个数,每个数只能是 112233 之一。这 NN 个数表示在初始状态时第一个柱子上所有盘子的类型,按照从上往下的顺序。

输出格式

输出文件 trique.out 只包含一个数,即最少的移动次数。

5
1 2 1 3 3
8

提示

样例说明

初始状态如下图: QQ20180308193216.png QQ20180308193233.png

数据范围

对于 2020%的数据, 盘子的种类不超过 22 种;

对于 4040%的数据, N300N \leq 300

对于 100100%的数据, N1000N \leq 1000