描述
如:dabdbf最长递增子序列就是abdf,长度为4
-
输入
-
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出字符串的最长递增子序列的长度
-
样例输入
-
3 aaa ababc abklmncdefg
样例输出
-
1 3 7
-
用双重循坏遍历,dp数组存储到某一个为止i的最长递增子序列的长度
-
<pre class="cpp" name="code">#include<iostream> #include<cstring> using namespace std; string s1;//输入的子串 int dp[10001];//用来记录到?为止,最长递增子串的长度 void LIS(){ memset(dp,0,sizeof(dp)); for(int i=0;i<s1.length();i++) { dp[i]=1; for(int j=0;j<i;j++) { if(s1[i]>s1[j])// dp[i]=max(dp[i],1+dp[j]); } } } int main() { int N; cin>>N; while (N--) { cin>>s1; LIS(); int max1=0; for(int i=0;i<s1.length();i++) { if(max1<dp[i]) max1=dp[i]; } cout<<max1<<endl; } return 0; }