UVA 11584 Partitioning by Palindromes

来源:互联网 发布:ai人工智能教程 编辑:程序博客网 时间:2024/05/23 19:17

题意就是给定一个只有小写字母的字符串,要将这个字符串划分为尽可能少的回文串

状态转移方程就是dp[i] = min( dp[j-1]+1, dp[i])  (1<=j<=i,当s[i,j]是回文串的时候);


#include <iostream>#include <cstdio>#include <cstring>#include <string.h>using namespace std;const int maxn = 1005;int dp[maxn];char s[maxn];int check(int l,int r){for(;l<r;l++,r--)if(s[l]!=s[r]) return false;return true;}int min(int a,int b){return a>b?b:a;}int main(){int i,j,k,t;cin>>t;while(t--){scanf("%s",s+1);int len = strlen(s+1);for(i=0;i<=maxn;i++)dp[i] = 1005;dp[0] = 0;for(i=1;i<=len;i++){for(j=1;j<=i;j++)if(check(j,i))dp[i] = min(dp[i],dp[j-1]+1);}cout<<dp[len]<<endl;}return 0;}


0 0
原创粉丝点击