UVA 11584 Partitioning by Palindromes

来源:互联网 发布:dnf客户端源码 编辑:程序博客网 时间:2024/06/07 05:19

题目描述:

点击打开链接

题意就是分割字符串,使分割后的每一个字符串都是回文串,求分割后的最小串数。

一个十分暴力的DP,直接枚举终点的起点,判断该串是否回文,然后状态转移dp[j]=min(dp[j],dp[i-1]+1);

AC代码:

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<string>#include<stack>#include<queue>#include<algorithm>#include"stdlib.h"using namespace std;const int MAXM=50010;string  s;int dp[MAXM];bool check(int x,int y){    bool flag=true;    for (int i=x;i<=y;i++)    {        if (s[i]!=s[y])        {            flag=false;            break;        }        y--;    }    return flag;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        cin>>s;        int len=s.size();        for (int i=0;i<len;i++)            dp[i]=i+1;        for (int j=1;j<len;j++)        {            for (int i=0;i<=j;i++)                if (check(i,j))            {                dp[j]=min(dp[j],dp[i-1]+1);            }        }        printf("%d\n",dp[len-1]);    }    return 0;}


原创粉丝点击