单调最长递增子序列
// 再一次复习 最长单调递增子序列dp求法
// 以前有过一次专门的总结,现在有点忘了,拿出来看看
// 目前为止,我做过的这类题目就1.最长子序列和 2.字母和数字单调最长序列。。。后面继续总结
#include <iostream> #include <string.h> #include <algorithm> #include <stdio.h> using namespace std; int main() { char a[100010]; int i,j,n,str; int dp[100010]; cin>>n; while(n--) { cin>>a; str=strlen(a); //for(i=0; i<100010; i++) //这里可以不写 // dp[i]=1; for(i=0;i<str;i++) { dp[i]=1; for(j=0;j<i;j++) if(a[i]>a[j]) dp[i]=max(dp[i],dp[j]+1); } int Max=1; for(i=0; i<str; i++) if(Max<dp[i]) Max=dp[i];//han printf("%d\n",Max); } return 0; }