Problem
Chloe 最近在她的手机上安装了 Zuma。给玩家一排 n 颗宝石,其中第 i 颗宝石的颜色为 c
i。游戏的目的——在尽可能短的时间内摧毁所有的石头。
在一秒钟内,Chloe 可以选择任何一个回文子串(一系列相邻的石头)并将其删除。去掉这个子串后,剩下的棋子又被移动,形成连续的一排。摧毁整条线最少需要多少秒?
回想一下,如果一个字符串(或子字符串)从左到右和从右到左的读法相同,那么它就是回文。在这种情况下,这意味着第一颗宝石的颜色等于最后一颗宝石的颜色,第二颗宝石的颜色等于倒数第二颗宝石的颜色,依此类推。
输入:
输入的第一行包含一个整数 n (1 ≤ n ≤ 500) —初始行中的石头数。
第二行包含 n 个整数,其中第 i 个整数等于 c
i (1 ≤ c
i ≤ n) &mdash ;初始行中第 i 个宝石的颜色。
输出:
打印单个整数——移除所有宝石所需的最少秒数。
示例:
<正文>
输入 |
输出 |
3
1 2 1
| 1 |
3
1 2 3
| 3 |
7
1 4 4 2 3 2 1
| 2 |
表>
说明:
第三个例子中的序列是 [1, 4, 4, 2, 3, 2, 1] -> [1, 4, 4, 1] -> []