连接: http://acm.nyist.net/JudgeOnline/problem.php?pid=17
单调递增最长子序列
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
4
-
描述
-
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
-
输入
-
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
- 输出字符串的最长递增子序列的长度 样例输入
-
3 aaa ababc abklmncdefg
样例输出
-
1 3 7
#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); /* for(i='a'-1;i<128;i++)printf(" %d",len[i]); printf("\n");*/ //去掉这句话就能明白代码的原理 } return len[127]; } int main() { int n; char s[10001]; for(scanf("%d\n", &n); n--;) printf("\n%d\n", length(gets(s))); return 0; }