nyoj 17 單調遞增最長子序列

單調遞增最長子序列

時間限制:3000 ms  |  內存限制:65535 KB
難度:4
描述
求一個字符串的最長遞增子序列的長度
如: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.}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章