单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
- 3
- aaa
- ababc
- abklmncdefg
样例输出
数组f[i]表示到下标为i的字符为止的最长递增子序列序列的长度
- 1
- 3
- 7
- #include<iostream>
- #include<string>
- using namespace std;
- int main(){
- int t;
- string s;
- cin >> t;
- while(t--){
- cin >> s;
- int ans = 0, f[10000];
- for(int i = 0, len = s.length(); i < len; ++i){
- int max = 0;
- for(int j = 0; j < i; ++j){
- if(s[j] < s[i] && max < f[j]){
- max = f[j];
- }
- }
- if((f[i] = max + 1) > ans){
- ans = f[i];
- }
- }
- cout << ans << "\n";
- }
- return 0;
- }