单调递增最长子序列
- 描述
- 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4- 输入
- 第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000 - 输出
- 输出字符串的最长递增子序列的长度
- 样例输入
-
3 aaa ababc abklmncdefg
- 样例输出
-
1 3 7
代码如下:
01.
#include
<stdio.h>
02.
#include
<string.h>
03.
char
str[10000];
04.
int
s[10000];
05.
int
main
()
06.
{
07.
int
i,j,n,m,max,k;
08.
scanf
(
"%d"
,&m);
09.
while
(m--)
10.
{
11.
max=0;
12.
scanf
(
"%s"
,str);
13.
n=
strlen
(str);
14.
for
(i=0;i<n;i++)
15.
{
16.
k=0;
17.
for
(j=0;j<i;j++)
18.
{
19.
if
(str[i]>str[j]
&& k<s[j])
20.
k=s[j];
21.
}
22.
s[i]=k+1;
23.
if
(max<s[i])
24.
max=s[i];
25.
}
26.
printf
(
"%d\n"
,max);
27.
}
28.
return
0;
29.
}