ACM DP Partitioning by Palindromes
滴,集训第十六天打卡。
补题路漫漫呀~
uva 11584
Partitioning by Palindromes
题目大意:将一个字符串划分成尽量少的回文串
思路:从1-N枚举,有转移方程dp[i+1]=min(dp[i+1],dp[j]+1)。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int dp[1005];
char a[1005];
bool isp(int l,int r)
{
for(int k=0;k*2<=r-l;k++)
{
if(a[l+k]!=a[r-k])
return false;
}
return true;
}
int main()
{
int n,b,i,j;
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
b=strlen(a);
for(i=0;i<b;i++)
dp[i]=99999999;
dp[0]=0;dp[1]=1;
for(i=1;i<b;i++)
{
dp[i+1]=99999999;
for(j=i;j>=0;j--)
{
if(isp(j,i))
dp[i+1]=min(dp[i+1],dp[j]+1);
}
}
printf("%d\n",dp[b]);
}
}
还没有评论,来说两句吧...