zoukankan      html  css  js  c++  java
  • D. 代码填空:LIS

    LIS是最长上升子序列。什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续。

    就像这样:22334477 和 22334466 就是序列 22 55 33 44 11 77 66 的两个上升子序列,最长的长度是 44

    LIS模板题,再写一遍加深印象

     

    #include<iostream>
    #include<cstring>
    
    using namespace std;
    
    int f[10000], b[10000];
    
    int lis(int n)
    {
        memset(f, 0, sizeof(f));
        
        int res = 0;
        
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < i; j++)
            {
                if(b[j] < b[i])
                {
                    f[i] = max(f[i], f[j] + 1);
                }
            }
            res = max(res, f[i]);
        }
        
        return res + 1;
    }
    
    int main()
    {
        int n; 
        scanf("%d", &n);
        
        for(int i = 0; i < n; i++)
        {
            scanf("%d", b + i);
        }
        
        printf("%d
    ", lis(n));
        
        return 0;
    }

    #include<iostream>#include<cstring>
    using namespace std;
    int f[10000], b[10000];
    int lis(int n){    memset(f, 0, sizeof(f));        int res = 0;        for(int i = 0; i < n; i++)    {        for(int j = 0; j < i; j++)        {            if(b[j] < b[i])            {                f[i] = max(f[i], f[j] + 1);            }        }        res = max(res, f[i]);    }        return res + 1;}
    int main(){    int n;     scanf("%d", &n);        for(int i = 0; i < n; i++)    {        scanf("%d", b + i);    }        printf("%d ", lis(n));        return 0;}

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    MSCRM 2011 修改显示记录数
    医疗相关名词解析
    把图片中的文字转成文本
    自我介绍吧
    第三次作业
    第一次作业心得
    耿丹161第一次作业
    第二次作业
    C#常用函数表及Asp.net(C#)常用函数表
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/h-hkai/p/8337629.html
Copyright © 2011-2022 走看看