#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[1010];
char str[1010];
int vis[1010][1010];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(vis,0,sizeof(vis));
memset(dp,0x3f,sizeof(dp));
scanf("%s",str);
int n=strlen(str);
for(int i=0;i<n;i++)
{
vis[i][i]=1;
if(i+1<n&&str[i]==str[i+1])
vis[i][i+1]=1;
}
for(int l=2;l<=n;l++)
for(int i=0;i+l<n;i++)
{
if(str[i]==str[i+l]&&vis[i+1][i+l-1])
vis[i][i+l]=1;
}
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
{
if(vis[j][i])
if(j==0)
dp[i]=min(dp[i],1);
else
dp[i]=min(dp[i],dp[j-1]+1);
}
printf("%d\n",dp[n-1]);
}
}
uva 11584
最新推荐文章于 2022-11-15 20:59:29 发布