UVa 11584 - Partitioning by Palindromes(DP)

来源:互联网 发布:mac软件下载网站推荐 编辑:程序博客网 时间:2024/05/22 02:45

给出一个字符串,判断他最少划分成几个回文串。
枚举字符串终点,转移方程为d[i]=min(d[i],d[j1]+1)

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1010;char s[maxn];int d[maxn];inline bool ok(int l,int r){    while(l<=r){        if(s[l]!=s[r]) return false;        ++l,--r;    }    return true;}int main(){    int t;    scanf("%d",&t);    while(t--){        scanf("%s",s);        int n=(int)strlen(s);        for(int i=0;i<n;++i){            d[i]=i+1;            for(int j=0;j<=i;++j)                if(ok(j,i)) d[i]=min(d[i],d[j-1]+1);        }        printf("%d\n",d[n-1]);    }    return 0;}
0 0