http://blog.youkuaiyun.com/whjkm/article/details/38582411
我的代码参考了上边的链接,不懂得可以看看,我在这里将我遇到的难点解释出来,希望对后边的同学有一点帮助
这段代码在我理解的时候主要是 dp[i] 的理解,代码在运行时,如 abklmncdefg,在运行到c时,dp[i]=3;依次向后进行
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,t;
char a[1000];
int dp[1000];
scanf("%d",&n);
while(n--)
{
t=1;
scanf("%s",&a);
for(i=0;i<strlen(a);i++)
{
dp[i]=1;
for(j=0;j<i;j++)
{
//dp[i]的使用很巧妙,我也是看了好久才看懂,可以自己多试几遍
if(a[i]>a[j]&&dp[i]<1+dp[j])
dp[i]++;
}
if(t<dp[i])
t=dp[i];
}
printf("%d\n",t);
}
return 0;
}