NYOJ 17 单调递增最长子序列

#include<stdio.h>
#include<string.h>
const int max=10001;
int dp[max];
char s[max];
int maxn;
void LTCS()
{
  int len;
  memset(dp,0,sizeof(dp));
  len=strlen(s);
  for(int i=0;i<len;i++)
  {
    dp[i]=1;
    for(int j=0;j<i;j++)
    {
      if(s[i]>s[j] && dp[i]<dp[j]+1 )
        dp[i]=dp[j]+1;
    }
  }
  maxn=0;
  for(int i=0;i<len;i++)
  if(maxn<dp[i])
    maxn=dp[i];
}
int main()
{
  int n;
  scanf("%d",&n);
  while(n--)
  {
    scanf("%s",s);
    LTCS();
    printf("%d\n",maxn);
  }
}

posted @ 2015-07-02 22:10  小松鼠。  阅读(112)  评论(0编辑  收藏  举报