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

70、最长上升子序列

时间:2024-06-16 09:02:59浏览次数:15  
标签:10 int res 70 序列 最长 dp 1000

最长上升子序列

题目描述

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

输入格式

第一行包含整数N。

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

输出格式

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

数据范围

1 ≤ N ≤ 1000 , 1≤N≤1000, 1≤N≤1000,
− 1 0 9 ≤ 数列中的数 ≤ 1 0 9 −10^9≤数列中的数≤10^9 −109≤数列中的数≤109

输入样例:

7
3 1 2 1 8 5 6

输出样例:

4

Solution

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] a = new int[N + 10];
        int[] dp = new int[N + 10];
        // 全部初始化为 1,因为每个字母都是一个上升子序列
        Arrays.fill(dp, 1);
        // N 的范围是 1000,可以用 n 方复杂度的做法
        // 两层循环
        // 状态表示: dp[i] 表示以 a[i] 结尾的上升子序列的长度;属性:最大值
        // 状态计算: 考虑倒数第二数字是否比当前数字小
        // 如果是 dp[i] = Math.max(dp[i],dp[j] + 1);
        for(int i = 1; i <= N; i++){
            a[i] = sc.nextInt();
            for(int j = 1; j <= i; j++){
                if(a[j] < a[i]) dp[i] = Math.max(dp[i], dp[j] + 1);
            }
        }
        // 遍历一遍
        int res = 1;
        for(int d : dp) res = Math.max(res, d);
        System.out.println(res);
    }
}

标签:10,int,res,70,序列,最长,dp,1000
From: https://blog.csdn.net/weixin_44010641/article/details/139573829

相关文章

  • SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环
    要在Matlab中实现NGO-TCN-BiGRU-Attention北方苍鹰算法进行多变量时间序列预测,需要按照以下步骤进行:准备数据:首先,准备多变量时间序列数据。确保数据已经进行了预处理,例如归一化或标准化,以便神经网络能够更好地进行学习和预测。构建NGO-TCN-BiGRU-Attention模型:根据算法的......
  • SOFTS: 时间序列预测的最新模型以及Python使用示例
    近年来,深度学习一直在时间序列预测中追赶着提升树模型,其中新的架构已经逐渐为最先进的性能设定了新的标准。这一切都始于2020年的N-BEATS,然后是2022年的NHITS。2023年,PatchTST和TSMixer被提出,最近的iTransformer进一步提高了深度学习预测模型的性能。这是2024年4月《SOFTS:Effi......
  • 最长回文子串
    给你一个字符串 s,找到 s 中最长的回文子串。publicclassSolution{publicStringlongestPalindrome(Strings){intlen=s.length();if(len<2){returns;}intmaxLen=1;intbegin=0;......
  • 二分【2】快速幂 单峰序列
    目录快速幂递归写法(a^b%m)迭代写法  单峰序列快速幂a^nn为奇数,转化为a*a^(n-1)n为偶数,转化为计算b=a^(n/2),在计算b^2a^b%m)递归写法(a^b%m)#include<iostream>#include<vector>#include<cmath>#include<string>#include<cstring>#include<algorithm>u......
  • 代码随想录算法训练营第38天 | 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬
    理论基础无论大家之前对动态规划学到什么程度,一定要先看我讲的动态规划理论基础。如果没做过动态规划的题目,看我讲的理论基础,会有感觉是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!如果做过动态规划题目的录友,看我的理论基础就......
  • CorelDRAW破解激活2024新版本序列号
    CorelDRAW破解2024最新版序列号激活码注册码,这可是个神奇的宝贝!......
  • 【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【贪心/脑筋急转弯】2
    有LeetCode算法/华为OD考试扣扣交流群可加948025485可上全网独家的欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明示例三......
  • 重学java 70.IO流 Commons-io工具包
    所有人都不看好你,可你偏偏最争气                            ——24.6.14一、介绍        IO技术开发中,代码量很大,而且代码的重复率较高。如果我们要遍历目录,拷贝自录就需要使用方法的递归调用,也增大了程序的复......
  • 034【GD32F470】MQ-3酒精检测传感器STM32移植教程
    2.31MQ-3酒精检测传感器MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn0)。当传感器所处环境中存在酒精蒸气时,传感器的电导率随空气中酒精蒸气浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。2.31.1......
  • php反序列化个人笔记
    反序列化什么是反序列化?格式转换序列化:对象转换为字符串或者数组等格式反序列化:将数组或字符串转换成对象为什么会出现安全漏洞?魔术方法如何利用漏洞?通过构造pop链,找到代码的逻辑漏洞,进行getshell,rce等操作反序列化利用分为三类魔术方法的调用逻辑语言原生类的调用逻......