首页 > 试题广场 >

回文序列

[编程题]回文序列
  • 热度指数:51 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
如果一个数字序列逆置之后跟原序列是一样的,称这样的数字序列为回文序列。例如:
{1, 2, 1}, {16, 82, 82, 16} , {113} 是回文序列, {1, 2, 2}, {16, 82, 82, 61} ,{113, 3, 11} 不是回文序列。

现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置,对于所给序列要求出最少需要多少次操作可以将其变成回文序列?


输入描述:
输入为两行,第一行为序列长度n (1 ≤ n ≤ 50) ,第二行为序列中n个整数item[i](1 ≤ item[i]≤ 1000),以空格分隔。


输出描述:
输出一个数,表示最少需要的转换次数
示例1

输入

6
1  1  1  1  1  5

输出

4

说明

输入为两行