思路:
区间DP,a[l]=a[r]时求l~r就是l+1到r或l到r-1
c o d e code code
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[1010][1010];
int a[1010], n;
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &a[i]);
memset(f, 1, sizeof(f));
for(int i=1; i<=n; i++)
f[i][i]=1;
for(int l=2; l<=n; l++)
{
for(int i=1; i+l-1<=n; i++)
{
int j=i+l-1;
if(a[i]==a[j])
f[i][j]=min(f[i][j-1], f[i+1][j]);
else
{
for(int k=i+1; k<=j; k++)
f[i][j]=min(f[i][j], f[i][k-1]+f[k][j]);
}
}
}
printf("%d", f[1][n]);
return 0;
}