您的位置:首页 > 其它

Partitioning by Palindromes UVA - 11584

2017-08-03 18:54 363 查看
https://vjudge.net/problem/UVA-11584

问分几组(最小)回文串。

dp[i]表示以i结尾的最小组数

先判断以 i 结尾的字符串是否是回文串,然后dp记录

#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
char s[1005];
int dp[1005];
bool check(int l,int r){
for( int i = l , j = r ; i < j ; i++,j-- ){
if( s[i] != s[j] ) return false;
}
return true;
}

int main(){

int n;
cin>>n;
while( n-- ){
scanf("%s",s+1);
memset(dp,0,sizeof(dp));
int len = strlen(s+1);
for( int i = 1 ; i <= len ; i++ ){
dp[i] = i ; //初始化为串原长
for( int j = 1 ; j <= i ; j ++ ){
if( check(j,i) )
dp[i] = min( dp[i] , dp[ j - 1 ] + 1 );
}
}
printf("%d\n",dp[len]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: