UVA 11583 Partitioning by Palindromes (区间DP)

来源:互联网 发布:64码高清网络电视 手机 编辑:程序博客网 时间:2024/06/01 19:20

 【题目链接】http://https://cn.vjudge.net/problem/UVA-11584

 

 【题解】 有一个长度不大于1000的字符串序列,问里面有多少个回文串,回文串就是,比如说abcba就是一个回文串,abacbc这里面就有两个回文串。

 裸的区间DP了,只要判断一下回文部分即可,详解看代码

 

 【AC代码】

#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int N=1005;const int INF=1e5;int dp[N];char s[N];bool is_huiwen(int j,int i)//判断回文串{    while(j<i)    {        if(s[j]!=s[i])            return false;        ++j;        --i;    }    return true;}int min(int x,int y){    return x>y?y:x;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        scanf("%s",s+1);        int len=strlen(s+1);        dp[0]=0;//记得初始化        for(int i=1;i<=len;i++)        {            dp[i]=INF;            for(int j=0;j<i;j++)            {                if(is_huiwen(j+1,i))                    dp[i]=min(dp[j]+1,dp[i]);            }        }        printf("%d\n",dp[len]);    }    return 0;}


原创粉丝点击