给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
#include<stdio.h>//此题就是求该串和逆序串的最大公共序列
#include<string.h>
int n,dp[1000][1000]={0};
int max(int n,int m)
{return m>n?m:n;}
main()
{
char s[1000],s1[1000];
scanf("%d",&n);
while(n--)
{
int k,i,j;
scanf("%s",s);
k=strlen(s);
for(i=0,j=k-1;i<k,j>=0;i++,j--)
s1[j]=s[i];
for(i=1;i<=k;i++)
{
for(j=1;j<=k;j++)
{
if(s[i-1]==s1[j-1]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
printf("%d\n",k-dp[k][k]);
}
}