描述求一个字符串的最长递增子序列的长度
如: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 ",ans); 30 } 31 return 0; 32 }