单调递增最长子序列

来源:互联网 发布:搜索网站排名优化策略 编辑:程序博客网 时间:2024/05/22 13:33
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3aaaababcabklmncdefg
样例输出
137
      
#include<iostream>#include<cstring>using namespace std;int dp[10000];char s[10000];int SubSeq(char *s,int len){  int i,j,ans,max;  ans=0;  for(i=0;i<len;i++){    max=0;    for(j=i-1;j>=0;j--){      if(s[j]<s[i])        if(max<dp[j])         max=dp[j];    }    dp[i]=max+1;    if(ans<dp[i])     ans=dp[i];  }   return ans;}int main(){   int n,m;   cin >> n;   while(n--){      cin >> s;      m=strlen(s);      memset(dp,0,sizeof(dp));      cout << SubSeq(s,m) << endl;   }   return 0;}

0 0