给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
#include<stdio.h>
#include<string.h>
#include<stdlib.h>//这个头文件里自带Max函数 自己定义max函数时将会出现编译错误
int ma(int n,int m)
{return m>n?m:n;}
int cmp(const void *a,const void *b)
{return *(char *)a-*(int *)b;}
int dp[10001][10001]={0};
char s[10001],f[10001],t;
main()
{
int n,k;
scanf("%d",&n);
getchar();
while(n--)
{
int max=0;
gets(s);
k=strlen(s);
for(int i=0;i<k;i++)
f[i]=s[i];
qsort(f,k,sizeof(f[0]),cmp);
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
{
if(s[i-1]==f[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=ma(dp[i-1][j],dp[i][j-1]);
}
printf("%d\n",dp[k][k]);
}
}