單調遞增最長子序列
- 描述
- 求一個字符串的最長遞增子序列的長度
如: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.
}