uva 11584 题目大意: 给一个字符串, 要求把它分割成若干个子串,使得每个子串都是回文串。问最少可以分割成多少个。

来源:互联网 发布:jquery.min.js.dump 编辑:程序博客网 时间:2024/04/28 16:56

题目大意:

给一个字符串, 要求把它分割成若干个子串,使得每个子串都是回文串。问最少可以分割成多少个。

#include<stdio.h>#include<vector>#include<map>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>using namespace std;char a[1010];int d[1010];int work(char c[],int st,int et){     int i,j,len,k;     while(st<et)     {     if(a[st]!=a[et])     return 0;     st++;     et--; } return 1; /*for(i=st,k=et;i<=(et-st+1)/2;i++,k--) {//    if(et==5)//    printf("%d %d\n",i,k); if(a[i]!=a[k]) return 0; } return 1;*/}int main(){   int i,j,k,n,m;   scanf("%d",&n);   while(n--)   {     scanf("%s",a);     int len=strlen(a);     d[0]=1;     for(i=1;i<len;i++)     {      d[i]=d[i-1]+1;      for(j=0;j<i;j++) {if(a[i]==a[j]&&work(a,j,i)){    if(j!=0)d[i]=min(d[i],d[j-1]+1);else d[i]=1;    }   }  }//  for(i=0;i<len;i++)//  printf("%d ",d[i]);//  printf("%d\n",work(a,1,5));  printf("%d\n",d[len-1]);   }   return 0;}



0 0
原创粉丝点击