zoukankan      html  css  js  c++  java
  • nyoj--17--单调递增最长子序列

    单调递增最长子序列

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
    描述
    求一个字符串的最长递增子序列的长度
    如:dabdbf最长递增子序列就是abdf,长度为4
    输入
    第一行一个整数0<n<20,表示有n个字符串要处理
    随后的n行,每行有一个字符串,该字符串的长度不会超过10000
    输出
    输出字符串的最长递增子序列的长度
    样例输入
    3
    aaa
    ababc
    abklmncdefg
    样例输出
    1
    3
    7
    /*本来想着会是dp,但是lower_bound()应该会方便一点,top一直指向当前最大的字符
    lower_bound来搜索比当前字符小的字符,但是返回的是地址需要减去首地址*/
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    char a[10100],b[10100];
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	while(n--)
    	{
    		memset(a,'',sizeof(a));
    		memset(b,'',sizeof(b));
    		scanf("%s",a);
    		int i,j,top;
    		top=0;
    		b[top]=a[0];
    		for(i=1;i<strlen(a);i++)
    		{
    			if(a[i]>b[top])
    			b[++top]=a[i];
    			else
    			{
    				j=lower_bound(b,b+top,a[i])-b;
    				b[j]=a[i];
    			}
    		} 
    		printf("%d
    ",top+1);
    	}
    	return 0;
    } 


  • 相关阅读:
    Android学习之简单的数据存储
    Android学习Tabhost、gallery、listview、imageswitcher
    Android学习之菜单
    Android学习之Notification
    android自定义控件
    Android简单登录系统
    Android学习自定义Dialog
    Android学习之DialogFragment
    Intent组件
    git
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273802.html
Copyright © 2011-2022 走看看