#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#define LL long long
#define ull unsigned long long
#define FOR(i,x,y) for(int i=x;i<=y;i++)
using namespace std;
const int INF = 100000000;
const int maxn = 1000 + 10;
char s[maxn];
int dp[maxn];
bool match(int i,int j)
{
while(i<=j)
{
if(s[i] != s[j]) return 0;
i++;
j--;
}
return 1;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>(s+1);
memset(dp,0,sizeof(dp));
int len = strlen(s+1);
for(int i=1;i<=len;i++)
{
int res = i+1;
for(int j=0;j<i;j++)
{
if(match(j+1,i))
res = min(dp[j]+1,res);
}
dp[i] = res;
}
cout<<dp[len]<<endl;
}
return 0;
}
UVA 11584 (简单DP,类似括号匹配)
最新推荐文章于 2020-05-28 22:46:48 发布