最长上升子序列(线性dp)-java

主要是解决最长上升子序列问题,推出状态转移方程。

文章目录

前言

一、最长上升子序列问题

二、算法思路

1.最长上升子序列思路

三、代码如下

1.代码如下(示例):

2.读入数据

3.代码运行结果

总结


前言

主要是解决最长上升子序列问题,推出状态转移方程。


提示:以下是本篇文章正文内容,下面案例可供参考

一、最长上升子序列问题

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

比如我们给定一个数列:

7
3 1 2 1 8 5 6

它的最长上升子序列就是4(即 1 2 5 6) 

二、算法思路

1.最长上升子序列思路

我们引入一个arr数组和一个dp数组,arr数组用来存储输入的数列,dp[i]表示的含义就是以第i个数为结尾的上升子序列的长度最大值。

那么当arr[i]>arr[j]时:

dp[i] = max(dp[j]+1) j = 0,1,2,3...i-1

dp数组代码:

        for(int i = 1;i <= n;i++) {//dp的默认值是1,数字本身算上升子序列中的一位dp[i] = 1;for(int j = 1;j <= i;j++) {if(arr[j] < arr[i]) {dp[i] = Math.max(dp[i],dp[j]+1);}}}

 以上述数列为例,它的dp数组如下:

1 1 2 1 3 3 4 

三、代码如下

1.代码如下(示例):


import java.io.*;
public class 最长上升子序列 {static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public static void main(String[] args) throws Exception{int n = nextInt();int[] arr = new int[1010];for(int i = 1; i <= n;i++) {arr[i] = nextInt();}int[] dp = new int[1010];for(int i = 1;i <= n;i++) {//dp的默认值是1,数字本身算上升子序列中的一位dp[i] = 1;for(int j = 1;j <= i;j++) {if(arr[j] < arr[i]) {dp[i] = Math.max(dp[i],dp[j]+1);}}}int res = 0;for(int i = 1;i <= n;i++) {res = Math.max(res, dp[i]);}pw.println(res);pw.flush();}public static int nextInt()throws Exception {st.nextToken();return (int)st.nval;}public static long nextLong()throws Exception {st.nextToken();return (long)st.nval;}public static String nextLine()throws Exception {return br.readLine();}
}

2.读入数据

代码如下(示例):

7
3 1 2 1 8 5 6

3.代码运行结果

4

最长上升子序列是 :1、2、5、6。长度是4


总结

最长上升子序列我们主要从dp数组中找出状态转移方程即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601740.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深入理解Java IO流0x03】解读Java最基本的IO流之字节流InputStream、OutputStream

在开始前&#xff0c;我们再来回顾一下这张图&#xff1a; 本篇博客主要为大家讲解字节流。 我们都知道&#xff0c;一切文件&#xff08;文本、视频、图片&#xff09;的数据都是以二进制的形式存储的&#xff0c;传输时也是。所以&#xff0c;字节流可以传输任意类型的文件数…

【SERVERLESS】腾讯云上实操

我们先来看看 云计算的 发展 流程 虚拟化的云计算方式&#xff1a; IaaS基础设施即服务【邮箱、微信、支付宝等】PaaS平台即服务【数据库服务、大数据计算平台】Saas软件即服务【云服务器、cpu、硬盘】 早期我们可能只听过上面这三个词 ,但是随着云计算的发展&#xff0c;新…

HIS系统是什么?一套前后端分离云HIS系统源码 接口技术RESTful API + WebSocket + WebService

HIS系统是什么&#xff1f;一套前后端分离云HIS系统源码 接口技术RESTful API WebSocket WebService 医院管理信息系统(全称为Hospital Information System)即HIS系统。 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等&…

javaWeb车辆管理系统设计与实现

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。 企业车辆管理系统运用现代化的计算机管理手段&#xff0c;不但可以对车辆的使用进行合理的管理&#xff0c;…

Pentaho Data Integration(kettle)下载

Kettle已然是改了名了&#xff0c;新名字叫Pentaho Data Integration 网上常见的下载地址已经失效&#xff0c;被提示找不到Date Integration目录&#xff1a; https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 点击页面上的pdf&#xff0c;下载文件后打…

JavaScript的函数基础

目录 前言: 1.函数是什么: 2.函数的基本使用: 2.1 定义函数: 2.2. 调用函数 2.3函数命名规范: 2.3.1由数字、字母、下划线组成&#xff1a; 2.3.2区分大小写&#xff1a; 2.3.3不能数字开头&#xff0c;也不能是关键字&#xff1a; 2.3.4自定义函数纯小写&#xff1a…

YOLOV8注意力改进方法:Deformable Attention Transformer(附改进代码)

原论文地址&#xff1a;原论文下载地址 论文摘要&#xff1a;Transformer最近在各种视觉任务上表现出了优异的性能。对于巨大的甚至是全局性的感受野赋予Transformer模型比CNN模型更高的表现力。然而&#xff0c;仅仅扩大感受野也会引起一些担忧。一方面&#xff0c;在ViT中使…

01 华为华三模拟器解决兼容问题

01 华为华三模拟器解决兼容问题 AI思路 要让华为和华三的模拟器兼容&#xff0c;您可以尝试以下方法&#xff1a; 更新模拟器版本&#xff1a;确保您使用的华为和华三模拟器都是最新版本。在华为官方网站或华三官方网站上下载最新的模拟器版本。 检查系统要求&#xff1a;确保…

Java调试之JDB命令行调试入门

0.前言 Java 调试器 (JDB) 是一个简单的 Java 类命令行调试器。 jdb 命令及其选项调用 JDB。 jdb 命令演示了 Java 平台调试器架构&#xff0c;并提供本地或远程 JVM 的检查和调试。 1.准备待调试的Java应用程序 public class JDB {public static int sum(int a,int b){int …

【简单讲解下PHP AES加解密示例】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

[C++][算法基础]合并集合(并查集)

一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&#xff0c;则忽略这个操…

如何恢复被.locked勒索病毒加密的服务器和数据库?

.locked勒索病毒有什么特点&#xff1f; .locked勒索病毒的特点主要包括以下几个方面&#xff1a; 文件加密&#xff1a;.locked勒索病毒会对受感染设备上的所有文件进行加密&#xff0c;包括图片、文档、视频和其他各种类型的重要文件。一旦文件被加密&#xff0c;文件的扩展…