单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
- 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
- 输入
- 第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000 - 输出
- 输出字符串的最长递增子序列的长度
- 样例输入
-
3 aaa ababc abklmncdefg
- 样例输出
-
1 3 7
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 5 int main() 6 { 7 int n,i,j,str,max; 8 int l[10003]; 9 char s[10003]; 10 11 scanf("%d",&n); 12 while(n--) 13 { 14 scanf("%s",s); 15 str=strlen(s); 16 l[0]=1; 17 for(i=1; i<str; i++) 18 { 19 l[i]=1; 20 for(j=0; j<i; j++) 21 { 22 if(s[i]>s[j] && l[i]<l[j]+1) 23 l[i]=l[j]+1; 24 } 25 } 26 for(max=i=0; i<str; i++) 27 if(max<l[i]) 28 max=l[i]; 29 30 printf("%d\n",max); 31 } 32 }