单调递增最长子序列
单调递增最长子序列
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
- 输入
- 第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000 - 输出
- 输出字符串的最长递增子序列的长度
- 样例输入
-
样例输出
-
1 3 7
Accepted
- #include<stdio.h>
- int length(char * s)
- {
- int len[128] = {0}, i, t;
- for(; *s != '\0' && (t = len[*s - 1] + 1); s++)
- for(i = *s; i < 128 && len[i] < t; len[i++] = t);
- return len[127];
- }
- int main()
- {
- int n;
- char s[10001];
- for(scanf("%d\n", &n); n--;)
- printf("%d\n", length(gets(s)));
- return 0;
- }