您的位置:首页 > 其它

NYOJ 17 单调递增最长子序列

2015-08-18 09:56 267 查看
单调递增最长子序列
时间限制:3000 ms  |  内存限制:65535 KB
难度:4

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

输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入

3
aaa
ababc
abklmncdefg

样例输出

1
3
7

#include<iostream>
#include<cstring>
#define N 10010
using namespace std;
char s
;
char ans
;
int count;
int main()
{
int test,len,i,j;
cin>>test;
while(test--)
{
cin>>s;
len=strlen(s);
count=1;
ans[0]=s[0];
for(i=0;i<len;i++)
{
for(j=count-1;j>=0;j--)
{
if(j==0&&ans[0]>s[i]) ans[0]=s[i];//表示字符串中有比ans[0]还小的字符,这是把ans[0]替换
 if(ans[j]<s[i])//如果ans中最大下标比s[i]小,则ans[j+1]=s[j],即把ans最大下标换为s[i]
{
ans[j+1]=s[i];
if(j==count-1)  count++;//如果ans的最大下标被赋值,则count+1;
break;
}
}
}
ans[count]='\0';
//        cout<<ans<<endl;
cout<<count<<endl;
}
return 0;
}
思路详解:如上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: