首页 > 其他分享 >最长上升子序列

最长上升子序列

时间:2024-09-02 11:54:24浏览次数:6  
标签:include 数列 NN int 109 序列 上升 最长

给定一个长度为 NN 的数列,求数值严格单调递增的子序列的长度最长是多少。

输入格式

第一行包含整数 NN。

第二行包含 NN 个整数,表示完整序列。

输出格式

输出一个整数,表示最大长度。

数据范围

1≤N≤10001≤N≤1000,
−109≤数列中的数≤109−109≤数列中的数≤109

输入样例:
7
3 1 2 1 8 5 6
输出样例:
4
#include <iostream>
using namespace std;
const int N=1010;
int w[N],f[N];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)   cin>>w[i];
    for(int i=1;i<=n;i++)
    {
        f[i]=1;
        for(int j=1;j<i;j++)
        {
            if(w[j]<w[i])
            {
                f[i]=max(f[i],f[j]+1);
            }
        }
    }
    int res=0;
    for(int i=1;i<=n;i++) res=max(res,f[i]);
    cout<<res;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=1010;
int w[N],f[N],g[N];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)   cin>>w[i];
    for(int i=1;i<=n;i++)
    {
        f[i]=1;
        
        for(int j=1;j<i;j++)
        {
            if(w[j]<w[i])
            {
                if(f[j]+1>f[i])
                {
                    f[i]=f[j]+1;
                    g[i]=j;
                }
            }
        }
    }
    
    // int res=0;
    // for(int i=1;i<=n;i++) res=max(res,f[i]);
    // cout<<res;
    int k=0;
    for(int i=1;i<=n;i++)
    {
        if(f[i]>f[k])   k=i;
    }
    vector<int>vet;
    
    for(int i=0,len=f[k];i<len;i++)
    {
        vet.push_back(w[k]);
        k=g[k];
        
    }
    reverse(vet.begin(),vet.end());
    for(auto &t:vet)
        cout<<t<<" ";
}

标签:include,数列,NN,int,109,序列,上升,最长
From: https://blog.csdn.net/black_blank/article/details/141716574

相关文章

  • 工作五年小结 | 面对不确定性快速上升的外部环境,我们该如何寻求突破?
    1.前言工作五年了,来京东马上满一年,前四年在开水团,不禁感叹时间过的真快啊!回想19年从西安交大硕士毕业孤身前往北京开始职业生涯,经历了孤独迷茫到自立坚定,再到23年下定决心携妻还蜀安家,并来到京东开始新的征程,这5年过的很快也很充实。今年也是我的而立之年,感觉一迈过这个坎,眼......
  • File类,递归,字符集,IO流(字节流,字符流,缓冲流,转换流,转换流,序列化流,释放资源的方式)
    目录一、File类二、递归三、字符集四、IO流1.概述2.字节流3.字符流4.缓冲流5.转换流6.打印流7.数据流8.序列化流9.释放资源的方式一、File类File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。注意:File类只能对文件本身进行操......
  • [蓝桥杯 2016 省 A] 密码脱落--最长公共子序列题解
    题目复述:题目链接:[蓝桥杯2016省A]密码脱落-洛谷#[蓝桥杯2016省A]密码脱落##题目描述X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的回文串)。......
  • 十大时间序列模型最强总结(六)Prophet
    六、Prophet1.原理Prophet是由Facebook开发的时间序列预测模型,专为处理具有强季节性、趋势变化以及缺失值和异常值的时间序列数据设计。它的核心思想是将时间序列数据分解为趋势、季节性和假期效应三个部分。2.核心公式推导:3.优缺点1)优点:适用于具有季节性......
  • IO流:数据流、序列化流、IO框架
    数据流DataInputStream(字节输入流的实现类)、DataOutputStream(字节输出流的实现类),下面例子先看输出,再看输入,因为输入和输出的类型顺序要一致。DataInputStream读取数据输出流写出去的数据、publicclassDataInputStreamTest2{publicstaticvoidmain(String[]args){......
  • 对最长路(和最短路)的一些思考
    为了使得整篇文章显得更加人性化,咱们首先说一下最短路。声明:不是讲解知识点不是讲解知识点不是讲解知识点不是讲解知识点不是讲解知识点,整篇文章建立在默认已经会的基础之上,然后提出一些个人见解。最短路此时的SPFA显得不再重要了(,咱们进入正题,说一下dijkstra。(堆优化的)迪杰......
  • 关于正点原子input子系统,驱动中按键中断只检测了上升或下降沿却可以实现连按(EV_REP)的
    问题在学习到Linux内核input子系统时,产生了一个疑惑。可以看到,我们改造按键中断驱动程序(请见keyinputdriver.c(内核驱动代码)),通过检测按键的上升沿和下降沿,在中断处理函数(上半部内)通过mod_timer(&dev->timer,jiffies+msecs_to_jiffies(20))函数启动定时器。在定时器处理函数中上......
  • leetcode 3 无重复字符最长串
    leetcode3无重复字符最长串思路使用滑动窗口,建两个整型变量lp和rp,分别代表左边界指针和右边界指针,整型temp储存当前字串长度,整形max储存当前最长长度,然后从左往右遍历字符串。解题过程先将字符串toCharArray转成字符数组m,建一个哈希集合,储存当前已经用过的字符,然后写一......
  • 代码随想录day46 || 647 回文子串, 516 最长回文子序列
    647回文字串funccountSubstrings(sstring)int{ //动规五部曲 //dp[i][j]表示s[i:j+1]区间是否是一个回文 //ifs[i]==s[j]{ifi-j<=1||dp[i+1][j-1]==true{dp[i][j]==true}} //初始化为false //从下往上,从左往右 //print varcountint var......
  • 6种有效的时间序列数据特征工程技术(使用Python)
    在商业分析中,"时间"是一个核心概念。我们基于时间组件来分析销售数据、收入、利润、增长,甚至进行预测。然而,对于初学者来说,这可能是一个复杂的主题。在处理时间敏感的数据集时,需要考虑时间序列数据的多个细微方面。在这个领域,没有放之四海而皆准的方法。我们不必总是强制使用传......