今天水一道【憋打我> <】
-
描述
-
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4-
输入
-
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
- 输出字符串的最长递增子序列的长度 样例输入
-
3 aaa ababc abklmncdefg
样例输出
-
1 3 7
-
第一行一个整数0<n<20,表示有n个字符串要处理
【C的输入字符串真心蛋疼,用了C++的cin输入字符串】
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int n;
char str[10000 + 5];
int a[10000 + 5];
scanf("%d", &n);
while (n--)
{
cin >> str;
int len = strlen(str);
int maxn = 1;
for (int i = 0; i < len; ++i)
{
a[i] = 1;
for (int j = 0; j < i; ++j)
{
if (str[j] < str[i])
{
a[i] = max(a[i], a[j]+1);
}
}
maxn = max(maxn, a[i]);
}
printf("%d\n", maxn);
}
return 0;
}