问题 P: 消消乐

内存限制:128 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:18 通过:14

题目描述

    zz最近在他的手机上安装了游戏消消乐。消消乐游戏中有一行n颗宝石,第i颗宝石的颜色为ci。游戏的目标是尽快摧毁线上的所有宝石。 

    zz能够在一秒钟内精确地选择一个连续的彩色宝石回文子串,并将其从行中删除。在子串被移除后,剩余的宝石再次移动形成实线。摧毁整条线所需的最小秒数是多少? 

让我们提醒一下,如果向后或向前读取相同的字符串(或子字符串),则称为回文。在我们的例子中,这意味着第一颗宝石的颜色等于最后一颗宝石的颜色,第二颗宝石的颜色等于倒数第二颗宝石的颜色,以此类推。

输入格式

第一行输入包含单个整数n(1n500)−宝石的数量。

第二行包含n个以空格分隔的整数,第i个整数为ci(1cin)−一行中第i个宝石的颜色。

输出格式

打印单个整数-销毁整行所需的最小秒数。
Examples
Input
3
1 2 1
Output
1
Input
3
1 2 3
Output
3
Input
7
1 4 4 2 3 2 1
Output
2

在第一个样本中,zz可以在一秒钟内摧毁整个系列。 

在第二个样本中,zz一次只能摧毁一个宝石,所以摧毁三个宝石需要3秒。 

在第三个样本中,为了达到2秒的最佳时间,首先销毁回文4 4,然后再销毁回文1 2 3 2 1。 

输入样例 复制

3
1 2 1

输出样例 复制

1

数据范围与提示

在第一个样本中,zz可以在一秒钟内摧毁整个系列。

在第二个样本中,zz一次只能摧毁一个宝石,所以摧毁三个宝石需要3秒。

在第三个样本中,为了达到2秒的最佳时间,首先销毁回文4 4,然后再销毁回文1 2 3 2 1。