回文字符串

来源:互联网 发布:淘宝学校 编辑:程序博客网 时间:2024/04/29 15:33
/*描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0<N<100)接下来的N行,每行一个字符串,每个字符串长度不超过1000.输出每行输出所需添加的最少字符数样例输入1Ab3bd其实是最长公共子序列的变形,将原序列a倒置得到b,求出最长公共子序列的长度,用总长度减去该长度得到的值就是没有匹配的字符的个数,*/#include <stdio.h>#include <string.h>int dp[1000][1000];int main(){int n;scanf("%d",&n);int len1,k,len;char a[1001],b[1001];int i,j;while(n--){memset(dp,0,sizeof(dp));scanf("%s",&a[1]);len=strlen(&a[1]);j=1;for(i=len;i>0;i--){b[i]=a[j];j++;}for(i=1;i<=len;i++){for(k=1;k<=len;k++){if(a[i]==b[k]){dp[i][k]=dp[i-1][k-1]+1;}else{dp[i][k]=(dp[i-1][k]>dp[i][k-1])?dp[i-1][k]:dp[i][k-1];}}}len1=len-dp[len][len];printf("%d\n",len1);}}

0 0
原创粉丝点击