单调递增最长子序列
题目描述:
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
如:dabdbf最长递增子序列就是abdf,长度为4
输入描述:
第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出描述:
输出字符串的最长递增子序列的长度
样例输入:
复制
3 aaa ababc abklmncdefg
样例输出:
1 3
7
代码:
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char a[10005]; int f[10005]; int main() { int t; scanf("%d",&t); while(t--) { memset(f,0,sizeof(f)); //一定要清空f数组 scanf("%s",a); int len=strlen(a); for(int i=len-2;i>=0;i--) for(int j=i+1;j<len;j++) { if(a[j]>a[i]) f[i]=max(f[i],f[j]+1); } int maxx=0; for(int i=0;i<len;i++) maxx=max(maxx,f[i]); printf("%d\n",maxx+1); } return 0; }