#include<bits/stdc++.h>
using namespace std;
int dp[10005][10005],n;
string s;
int main()
{
cin>>n;
cin>>s;
for(int i=1;i<=n;i++)dp[i][i]=1;
for(int len=1;len<=n;len++)
{
for(int i=1;i+len<=n+1;i++)
{
int ends=i+len-1;
for(int j=i;j<ends;j++)
{
if(s[i]==s[ends])dp[i][ends]=min(dp[i+1][ends],dp[i][ends-1]);
else dp[i][ends]=min(dp[i][ends],dp[i][j]+dp[j+1][ends]);
}
}
}
cout<<dp[1][n];
return 0;
}
大佬捞捞 蒟蒻区间dp没搞明白
参考一顿tj还有模板愣是没搞出来……