nyoj 17 單調遞增最長子序列
阿新 • • 發佈:2018-12-23
單調遞增最長子序列
時間限制:3000 ms | 記憶體限制:65535 KB
難度:4
輸入
第一行一個整數0<n<20,表示有n個字串要處理
隨後的n行,每行有一個字串,該字串的長度不會超過10000
輸出
輸出字串的最長遞增子序列的長度
樣例輸入
3 aaa ababc abklmncdefg
樣例輸出
1 3 7
描述
求一個字串的最長遞增子序列的長度
如:dabdbf最長遞增子序列就是abdf,長度為4
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; int n; char s[10005]; int Max; int num[10005]; int main() { scanf("%d",&n); while (n--) { Max=0; scanf("%s",s); //printf("%s\n",s); int len=strlen(s); for (int i=0;i<len;i++) num[i]=1; for (int i=0;i<len;i++) { for (int j=0;j<i;j++) { if(s[i]>s[j]&&num[i]<num[j]+1) { num[i]=num[j]+1; } } Max=max(Max,num[i]); } printf("%d\n",Max); } return 0; }