java最长递增子序列_JAVA最长递增子序列「建议收藏」

java最长递增子序列_JAVA最长递增子序列「建议收藏」问题描述LIS(LongestIncreasingSubsequence,最长递增子序列):给出一个序列a1,a2,a3,a4,a5,a6,a7…an,求它的一个子序列(设为s1,s2,…sn),使得这个子序列满足这样的性质,s1最长递增子序列实例分析17359481最长递增子序列算法设计设b[i]是在a[i]为单调递增子序列最后一个元素时,所得最长单调递增…

大家好,又见面了,我是你们的朋友全栈君。

问题描述  LIS(Longest Increasing Subsequence,最长递增子序列):给出一个序 列a1,a2,a3,a4,a5,a6,a7…an,求它的一个子序列(设为s1,s2,…sn),使得这个 子序列满足这样的性质,s1

最长递增子序列

实例分析 1 7 3 5 9 4 8 1

最长递增子序列

 算法设计  设b[i]是在a[i]为单调递增子序列最后一个元素时,所得最长单调递增子序列 的长度

  

 

i)j1a[i]if(a[j] 1max(b[j]) 1)if(i 1

b[i]

最长递增子序列

 算法设计  a数组存储原始数据  b数组存储对应最长上升子序列长度

i 1 2 3 4 5 6 7 a[i] 1 7 3 5 9 4 8 b[i]初始值 1 1 1 1 1 1 1 b[i] 1 2 2 3 4 3 4

最长序列长度

1 7 3 5 9 4 8

i 1 2 3 4 5 6 7“

a[i] 1 7 3 5 9 4 8

b[i] 1 2 2 3 4 3 4

pre[i] 0 1 1 3 4 3 6

package book;

import java.util.Scanner;

public class 最长公共子序列 {

static int n;

static int a[];//原始数据

static int b[];//存放最长的序列长度

static int c[];//

static int pre[];//存放前一个数据编号

static int max;

static int lab;//存储最长子序列的最后一个元素的位置

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

n=sc.nextInt();

a=new int[n+1];

b=new int[n+1];

c=new int[n+1];

pre=new int[n+1];

for(int i=1;i<=n;i++) {

a[i]=sc.nextInt();

}

slove();

System.out.printf(“%d\n”,max);

//输出数列O(n)

for(int i=1;i<=max;i++) { System.out.printf(“%d,”,c[i]); }

}

private static void slove() {

b[1]=1;//第一个数字本身长度为1;

for(int i=2;i<=n;i++) {

max=0;

for(int j=i-1;j>=1;j–) {

if(a[j]max) {

max=b[j];//要这个数的关键是

pre[i]=j;

}

}

b[i]=max+1;

}

max=b[1];

for(int i=2;i<=n;i++) {

if(b[i]>max) {

max=b[i];

lab=i;

}

}

int i=lab;

int num=max;

int j=max;

//将a数组复制到c数组

while(num>0) {

c[j]=a[i];

j–;

i=pre[i];

num–;

}

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132191.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器矿机系统,云服务器矿机系统选择_云服务器系统哪个好

    服务器矿机系统,云服务器矿机系统选择_云服务器系统哪个好云服务器矿机内容精选换一换公有云平台支持弹性云服务器在专属主机与公共资源池之间迁移,具体包括:将创建在专属主机上的弹性云服务器迁移至其他专属主机。将创建在专属主机上的弹性云服务器迁移至公共资源池,即不再部署在专属主机上。将公共资源池的弹性云服务器迁移至专属主机上,成为专属主机上创建的弹性云服务器。关机状态的弹性云服务器才能执行迁移操作。云备份或云服务器备份不受冷迁用户可以在管理控制台对专属主机上…

    2022年9月30日
    0
  • C语言十字相乘法_三次方十字相乘法

    C语言十字相乘法_三次方十字相乘法视频地址十字相乘法视频教程//初学C语言第2天,2小时写了一个简单的穷举法。#include<stdio.h>#include<math.h>intmain(){ intX=50;//自然数 floata,b,c; a=2;//二次项系数 b=5;//一次项系数 c=-3;//常数项 floata1,a2,a3,a4,…

    2025年6月3日
    0
  • Map的有序性_有序的map集合有哪些

    Map的有序性_有序的map集合有哪些//使用LinkedHashMap代替无序的HashMap实现publicstaticvoidmain(String[]args){/***Constructsanemptyinsertion-ordered<tt>LinkedHashMap</tt>instance*withthedefaul…

    2022年9月23日
    0
  • 一致性哈希算法原理及代码实现「建议收藏」

    一致性哈希算法原理及代码实现「建议收藏」一致性哈希安装goget-ugithub.com/junhaideng/consistent使用c:=consistent.New()ips:=[]string{“192.168.0.1″,”192.168.0.2″,”192.168.0.3″,”192.168.0.4”}for_,ip:=rangeips{c.Add(ip)}fmt.Println(“ip:”,c.Get(“/hello.txt”))背景在介绍一致性哈希之前,首先来看

    2022年7月27日
    4
  • anaconda跟pycharm_pycharm跟anaconda有什么区别

    anaconda跟pycharm_pycharm跟anaconda有什么区别Anaconda是一个科学计算环境,当在电脑上安装好Anaconda3以后,就相当于安装好了Python,还有一些常用的库,如numpy,scrip,matplotlib等库。(如果你这里没有安装anaconda的话,直接安装了Python,装完Python想要使用这些库的话还要在cmd中运行pipinstall…

    2022年8月26日
    3
  • ffmpeg 安装(支持h.265)

    ffmpeg 安装(支持h.265)安装FFMPEG需要的所有组件sudoapt-getupdatesudoapt-get-yinstallautoconfautomakebuild-essentiallibass-devlibfreetype6-dev\libsdl2-devlibtheora-devlibtoollibva-devlibvdpau-devlibvorbis-devl…

    2022年9月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号