【模板】南阳理工--17 单调递增最长子序列

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

 
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 char a[10000+10];
 6 int dp[10000+10];
 7 int main()
 8 {
 9     int n;
10     scanf("%d",&n);
11     while(n--)
12     {
13         scanf("%s",a);
14         int length=strlen(a);
15         int ans=0;
16         for(int i=0;i<length;i++)  //for里面每条语句的位置不能错了,位置,位置..
17         {
18             dp[i]=1;
19             for(int j=0;j<i;j++)
20             {
21                 if(a[i]>a[j])
22                 {
23                     dp[i]=max(dp[i],dp[j]+1);
24                 }
25                 
26             }
27             ans=max(dp[i],ans);
28         }
29         printf("%d\n",ans);
30     }
31     return 0;
32 }

 



posted @ 2017-08-09 17:33  ⊙∽⊙Perseverance  阅读(115)  评论(0编辑  收藏  举报