zoukankan      html  css  js  c++  java
  • nyoj17单调递增最长子序列(dp)

    单调递增最长子序列

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
     
    描述
    求一个字符串的最长递增子序列的长度
    如:dabdbf最长递增子序列就是abdf,长度为4
     
    输入
    第一行一个整数0<n<20,表示有n个字符串要处理
    随后的n行,每行有一个字符串,该字符串的长度不会超过10000
    输出
    输出字符串的最长递增子序列的长度
    样例输入
    3
    aaa
    ababc
    abklmncdefg
    样例输出
    1
    3
    7
    来源
    经典题目
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int dp[10010];
    char s[10005];
    int t,ans;
    void solve()
    {
        int len=strlen(s);
        for(int i=0;i<len;i++)
        {
            dp[i]=1;
            for(int j=0;j<=i;j++)
            {
                if(s[j]<s[i])
                dp[i]=max(dp[i],dp[j]+1);
            }
            ans=max(ans,dp[i]);    //这里注意不要忘了 
        }
        printf("%d
    ",ans);
    }
    int main()
    {
        scanf("%d",&t);
        getchar();
        while(t--)
        {
            ans=0;//注意ans初始化 
            memset(dp,0,sizeof(dp));
            gets(s);
            solve();
        }
        return 0;
    }
  • 相关阅读:
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言|博客作业05
    C语言I博客作业04
    【lhyaaa】2020深圳大湾区比赛总结
  • 原文地址:https://www.cnblogs.com/qianyanwanyu--/p/4384725.html
Copyright © 2011-2022 走看看