请大佬看看我的代码,92分AC不了。
#include<bits/stdc++.h>
using namespace std;
int n;
int s[600],f[600][600];
int main()
{
scanf("%d",&n);
for(int i = 1;i<=n;i++)
{
scanf("%d",&s[i]);
}
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=n;j++)
{
f[i][j] = 0x3f3f3f3f;
}
f[i][i] = 1;
}
for(int i = 1;i<=n;i++)
{
f[i][i+1] = 1 + (s[i]!=s[i+1]);
}
for(int len = 3;len<=n;len++)
{
for(int l = 1;l<=n;l++)
{
int r = l + len - 1;
if(r>n)
{
break;
}
if(s[l]==s[r])
{
f[l][r] = f[l+1][r-1];
}
else
{
for(int k = l;k<r;k++)
{
f[l][r] = min(f[l][r],f[l][k]+f[k+1][r]);
}
}
}
}
printf("%d\n",f[1][n]);
}