标签:
题目描述
求一个字符串的最长递增子序列的长度,如: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 #define N 10010 4 5 char str[N]; 6 int maxLen[N]; 7 int main(void) 8 { 9 int n, len, i, j, max; 10 11 scanf("%d", &n); 12 getchar(); 13 while (n--) 14 { 15 fgets(str, N, stdin); 16 len = strlen(str); 17 maxLen[0] = 1; 18 for (i = 1; i < len; i++) 19 { 20 max = 0; 21 for (j = i - 1; j >= 0; j--) 22 { 23 if (str[i] > str[j] && max < maxLen[j]) 24 { 25 max = maxLen[j]; 26 } 27 } 28 maxLen[i] = max + 1; 29 } 30 max = maxLen[0]; 31 for (i = 1; i < len; i++) 32 { 33 max = (maxLen[i] > max) ? maxLen[i] : max; 34 } 35 printf("%d\n", max); 36 } 37 return 0; 38 }
标签:
原文地址:http://www.cnblogs.com/maxin/p/5595332.html