#328. 汉诺塔问题 5
汉诺塔问题 5
题目描述
这是一个新型汉诺塔游戏。
有两个柱子,一个叫 A 柱,另一个叫 B 柱。柱子之间有一个桌子。
初始时,将编号为 1 ~ n 的 n 个中间有孔的圆盘打乱顺序后,套放在 A 柱上。
现在要将 A 柱最上面的 x 个圆盘全部套放到 B 柱上,要求使得圆盘编号自上而下按编号从大到小排列。
你可以借助中间的桌子完成游戏。
只有两种操作供选择:
-
如果 A 柱上还有圆盘,将 A 柱最上面的一个圆盘放在桌子上。并且,你要么将圆盘放在桌子上已有的某个圆盘堆的最上面,要么放在最右边自成一堆。
-
如果桌子上有圆盘,将最靠左的那堆的最上面的一个圆盘套放到 B 柱上。
你的目标是:最大化 x 的值。
输入格式
第一行:一个整数 n
接下来 n 行,每行一个整数,依次表示 A 柱初始圆盘自上而下的编号。保证这 n 个数是 1 ~ n 的一个排列。
输出格式
一个整数,表示答案。
样例输入
5
5
2
3
1
4
样例输出
3
样例解释
A 柱的前 3 个圆盘最终可以使其在 B 柱自上而下圆盘编号依次为 5、3、2。
数据范围
100% 的数据:1 ≤ n ≤ 10^5