首页 > 代码库 > 单调递增最长子序列

单调递增最长子序列

单调递增最长子序列

描述

求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4

 

 

输入
第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3aaaababcabklmncdefg
样例输出
137

 

 #include <iostream>#include <iomanip>#include <algorithm>#include <vector>#include <list>#include <memory.h>#include <string>#include <math.h>using namespace std;char ch[10005];int dis[10005];int main(){    int n;    cin>>n;    while(n--)    {        cin>>ch;        dis[0] = 1;        int max_ = 1;        for(int i=0;i<strlen(ch);i++)        {            dis[i] = 1;            for(int j=0;j<i;j++)            {                if(ch[j] < ch[i])                    dis[i] = max(dis[i],dis[j]+1);                if(dis[i] >= max_)                    max_ = dis[i];            }        }                cout<<max_<<endl;    }     return 0;}            

 

单调递增最长子序列