NYOJ 17 单调递增最长子序列(动态规划)

时间限制:3000 ms  |  内存限制:65535 KB

难度:4

  • 描述
  • 求一个字符串的最长递增子序列的长度

    如:dabdbf最长递增子序列就是abdf,长度为4

    • 输入
    • 第一行一个整数0<n<20,表示有n个字符串要处理

      随后的n行,每行有一个字符串,该字符串的长度不会超过10000

    • 输出
    • 输出字符串的最长递增子序列的长度
    • 样例输入
    • 3
      aaa
      ababc
      abklmncdefg
    • 样例输出
    • 1
      3
      
      7
      
#include<iostream>
#include<cstring>

using namespace std;

int dp[10000];
char s[10000];

int SubSeq(char *s, int len)
{
    int i,j,ans,max;
    ans=0;
    for(i=0;i<len;i++)
    {
        max=0;
        for(j=i-1;j>=0;j--)
        {
            if(s[j]<s[i])
                if(max<dp[j])
                    max=dp[j];

        }
        dp[i]=max+1;
        if(ans<dp[i])
            ans=dp[i];
    }

    return ans;
}

int main()
{
    int n,m;
    cin >> n;;
    while(n--)
    {
        cin>>s;
        m=strlen(s);
        memset(dp,0,sizeof(dp));
        cout << SubSeq(s,m)<<endl;
    }
    return 0;
}
时间: 2024-10-24 09:39:42

NYOJ 17 单调递增最长子序列(动态规划)的相关文章

nyist oj 17 单调递增最长子序列 (动态规划经典题)

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 来源 经典题目 动态规划的经典题目:好像还有好几种解法,我现在研究的

NYOJ 17 单调递增最长子序列

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 动归,不多说,看代码: #include<stdio.h>

NYOJ 17 单调递增最长子序列 DP

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 来源 经典题目 #include<cstdio> #de

NYOJ 17:单调递增最长子序列【二分】

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 AC-code: #include<cstdio> #i

nyoj 题目17 单调递增最长子序列

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 复习了利用二分搜索和额外空间解决最长递增子序列问题,最重要的是二分搜索的

NYOJ 214 单调递增最长子序列(二)

#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[

【动态规划】单调递增最长子序列

问题 D: [动态规划]单调递增最长子序列 时间限制: 1 Sec  内存限制: 128 MB提交: 36  解决: 25[提交][状态][讨论版] 题目描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 解题思

南阳17(单调递增最长子序列)

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 1 #include<stdio.h> 2 #include

单调递增最长子序列(动态规划)

单调递增最长子序列 题目描述: 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入描述: 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出描述: 输出字符串的最长递增子序列的长度 样例输入: 3 aaa ababc abklmncdefg 样例输出: 1 3 7AC代码: 1 #include<stdio.h> 2 #include<string.h> 3