17 单调递增最长子序列

来源:互联网 发布:自动软文软件 编辑:程序博客网 时间:2024/05/29 15:10


单调递增最长子序列

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3aaaababcabklmncdefg
样例输出
137

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int dp(char s[],int l){    int i,j,max,x;    char a[10001];    memset(a,1,l);    max=a[0]=1;    for(i=1;i<l;i++)        for(j=0;j<i;j++)            if(s[i]>s[j] && a[i]<a[j]+1) a[i]=a[j]+1;    for(i=0;i<l;i++)    {        if(max<a[i]) max=a[i];    }    return max;}int main(){    int n;    char s[10001];    scanf("%d",&n);    while(n--)    {        scanf("%s",s);        printf("%d\n",dp(s,strlen(s)));    }}


0 0