求最长非升子序列长度

最长上升子序列问题(LIS问题)与最长不上升子序列问题的四种方法(c++ 模板代码) LIS问题与 L不IS问题 的模板代码,四种方法,动态规划,树状数组,线段树,二分查找 阅读详情

求最长非升子序列长度,主要使用dfs(递归实现)以及dp两种方法。源码如下:

#include <iostream>
using namespace std;

//overrall variable
int * numbers;
int * dp;
int nums;
int max_length_dfs;
int max_length_dp;


//dfs-recursively implemented
void dfs_recursive(int * number,int pos,int length)
{
	for(int i = pos;i < nums;i++)
	{
		if(number[i] < number[pos])
		{
			dfs_recursive(number,i,length+1);
		}
	}
	if(length > max_length_dfs)
	{
		max_length_dfs = length;
	}

}
int dping(int pos)
{
	if(dp[pos] > 0)
		return dp[pos];
	int max = 0;
	for(int i = 0;i < pos;i++)
	{
		if(dping(i) > max && numbers[i] >= numbers[pos])
			max = dping(i);
	}
	dp[pos] = max + 1;
	return dp[pos];

}


int main()
{
	cin >> nums;
	numbers = new int[nums];
	dp = new int[nums];
	for(int i = 0;i < nums;i++)
	{
		cin >> numbers[i];
		dp[i] = 0;
	}
	//dfs
	dfs_recursive(numbers,0,1);

	//dp
	for(int i = 0;i < nums;i++)
	{
		if(dping(i) > max_length_dp)
			max_length_dp = dping(i);
	}
	
	cout << "The result by dfs: " << max_length_dfs << endl;
	cout << "The result by dp: " << max_length_dp << endl;
	//free
	delete [] numbers;
	delete [] dp;
	system("pause");
}


最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我) 目录最长上升子序列一、朴素做法O(2n)O(2^n)O(2n)二、优化做法O(nlogn)O(nlogn)O(nlogn)三、例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列)1.朴素做法暴力O(n2)O(n^2)O(n2)2.树状数组优化O(nlogn)O(nlogn)O(nlogn)3.二分优化O(nlogn)O(nlogn)O(nlogn)四、P4309 [TJOI2013... 阅读详情

相关推荐

求整数数组中的最长递增子序列长度

昨天在复习软考的时候发现了这样的一个算法,有些地方确实经过一番推敲才搞懂,今天来整理记录一下~ 动态规划通常用来求解最优化问题,在这类问题中,我们通过做出一组选择来达到最优解。在做出每个选择的同时,通常会生成与原问题形式相同的子问题。当多于一个选择子集都生成相同的子问题时,动态规划技术通常会很有效,其关键技术就是对每个这样的子问题都保存其解,当其重复出现时可以避免重复求解。---《算法导论》

桃厉害~ 3538

洛谷P1020导弹拦截——最长不升/上升子序列

洛谷P1020导弹拦截——最长不升/上升子序列

lijingheng66的博客 1307

求最长不增子序列、最长单调递减子序列、最长不降子序列、最长单调递增子序列长度

免费午餐问题的引申: 代码如下: #include #include using namespace std; int total = 0; vector v1;//原始数据集合 vector v2;//最长不增子序列暂时集合 vector v3;//最长单调递减子序列暂时集合 vector v4;//最长不降子序列暂时集合 vector v5;//最长单调递增子序列暂时集合 //

2841

导弹防御系统java_导弹防御问题 动态规划 java

Description某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。Input输入有两行,第一行,输...

weixin_34060849的博客 510

求最长公共子序列长度(nlogn)【 包含了求最长上升子序列长度(nlogn)】

这里只说步骤吧,至于原理,可以自己百度找找; 假设两个序列   A,B,找两者的最长公共子序列; 第一步: 我们要去找出 A中所有与 B 相同的元素,这些元素在 B中的位置,各自为一个集合;比如 A = { a c f  d }  ,B = { c f g c a } , 则有  (从 i = 1 开始 )a ={ 5 } , c = { 1 ,4  } , f = { 2 }; a 这个元素...

Y390d的博客 2919

动态规划——最长非降子序列的长度

动态规划——最长非降子序列的长度题目描述:要求得到一个数组的以非降排列的子序列的最大长度,其中并不要求子序列中的元素一定是按照数组顺序的连续数值。 以6 , 4 , 5 , 8 , 7 , 3 , 9为例,最长非降子序列为{4,5 , 8 , 9}和{4,5 , 7 , 9},相应的其长度为4。解题思路:因为子序列的定义并不要求元素是数组中连续的数,我们也不得而知最长子序列将从哪一个地方开始,所以不

qq_23826663的博客 1443

详解_最长不上升子序列(拦截导弹)_动态规划

拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 输入 第一行输入测试数据组数N(1&lt;=N&lt;=10) 接下来一行输入这组测试数据共有多少个导弹m(1&lt;=m&lt;=20) 接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。 输出 输出最多能拦截的导弹数目 样例输入 2 8 389 207 155 300 299 170...

SWEENEY_HE的博客 5002

求最长上升子序列长度——C++

拿道题目,第一思路是先分析。 求数组最长上升子序列,也就是意味着要遍历整个数组中所有子序列,这时可以考虑是否可以用动态规划。由于动态规划知识,知道这是一题线性动态规划的题目,可以采用线性动态规划解法,即使经典的LIS(Longest Increasing Subsequence)。 动态规划满足三个条件:状态方程、状态转移方程、边界条件,根据分析可知该题满足条件,下面是分析的动态转移方程: 1.2代码实现分析 由上面的状态转移方程和表格可知,需要求有n个子序列长度的LIS,就必须先求出第0个,然后退出第

净无邪博客 2129

求最长公共子序列长度

求两个字符串的公共子序列1.求最长公共子序列(子序列可以不连续)2.最长连续子串 1.求最长公共子序列(子序列可以不连续) 这是一道动态规划题,设二维数组dp[i][j],dp[i][j]表示a串前i个字符(包括第i个)与b串前j个字符(包括第j个)所有的公共子序列的最长长度。 例如,a串abbcd,b串abcd,dp[3][3]就表示的a的前三个字符与b的前三个字符的最长公共子序列长度,值为2。...

QingtianD的博客 4145

最长不升公共子序列问题【求出子序列长度以及该子序列】

最长不升公共子序列问题的动态规划算法,结果求出了子序列的长度以及该子序列是什么,采用的是Java。

ST-LINK调试原理与STM32硬件连接实战指南

嵌入式调试器是连接开发环境与物理MCU的核心枢纽,其本质是基于ARM CoreSight架构的实时硬件观测与控制接口。它通过JTAG或SWD协议访问内核寄存器、内存及外设,实现断点、单步、内存监视等深度调试能力,远超简单程序烧录功能。ST-LINK作为主流ARM Cortex-M调试器,支持SWD(2线)与JTAG(多线)双模式,在电平匹配、复位控制、引脚复用规避等硬件层面临关键工程约束。掌握VREF参考电压配置、nSRST硬复位接线、调试引脚隔离策略及Keil MDK调试会话配置,是保障STM32稳定联机

weixin_42596214的博客 312

算法 - 求最长升序子序列长度

求一个数组中最长升序子序列的长度。如 [8,4,7,5,1,3,6,2]; 升序子序列有 [4,7],[4,5,6],[1,3,6],最长升序子序列的长度为 3。

杏子 2400

Allegro老鸟的20年效率秘籍:用YepEda Skill脚本实现PCB设计全流程自动化

本文分享了Allegro资深工程师20年效率秘籍,通过YepEda Skill脚本实现PCB设计全流程自动化。从封装建库到规则配置,再到DFM审核,YepEda Skill大幅提升设计效率,每天节省至少4小时重复劳动。文章详细解析了自动化工具链的核心功能,并提供了实战技巧和量化对比数据。

weixin_42546392的博客 239

最长递增子序列的长度

给你一个正整数数组nums,输出其中最长严格递增子序列的长度。例如,给定数组为{1, 2, 6, 7, 2, 4, 5, 3},其最长严格递增子序列是:{1,2,4,5},长度是4,因此输出 4。

dreammatters的博客 1932

AI使用指南:6个超实用的Prompt提示词模板

最近越来越多人开始接触AI,但其实想要让AI更懂你,关键是掌握对的提示词模板!今天就给大家分享6种超实用的Prompt提示词模板,不管你是小白还是老手都能用

程序员世杰 8173

解决mamba_ssm库安装难题:两种高效方法详解

本文详细解析了mamba_ssm库安装失败的常见原因,并提供了两种高效的解决方案。针对其依赖C++/CUDA扩展编译的特性,文章手把手指导用户通过GitHub克隆源码编译安装,或寻找匹配的预编译Wheel文件直接安装,帮助开发者彻底解决环境配置难题,顺利部署Mamba模型。

weixin_29056865的博客 553

求最长连续子序列的长度

给你一个排序的数组,例如 { 1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15 } ,求最长连续子序列的长度 public static int getLongest(int[] strs) { int max = 0; int oldmax = 0; for (int i = 1; i < strs.length; ++i) { ...

wjavadog的博客 4170

2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

针对YOLO26模型改进痛点,本专栏整理200+实战验证方法,覆盖卷积层、注意力机制等核心模块。 每种方法含原理、性能分析、改进路径及实操流程,代码可直接运行,快速提升模型效果,性价比超高。

魔改工程师的博客 1万+

最长非降子序列、非升子序列(问题)

问题大致是给出一组数列,求出数列中最长不降子序列或者最长不升子序列,这里的子序列在原序列中可以不连续。      顾名思义,不降可理解为递增,不升亦可解释为递减。      显而易见,动态规划是一种容易让人想到的算法。以下先用动态规划求取最长递增子序列中的元素个数。

做自己想做的,即使是错的 7257

解析 RABAX during SAPGUI Logon 错误及其解决方案

登录用户关联了初始启动程序,该程序由于未处理的异常导致运行时错误。在 ST22 查看错误的程序名和错误行。修复初始程序代码中的逻辑问题。重新部署修复后的代码。示例代码:防止未处理的异常TRY." 模拟逻辑处理ENDTRY.此代码通过 TRY-CATCH 块捕获潜在错误,避免程序崩溃。是 SAP 系统中常见的运行时错误,其根源可能涉及多个方面,包括用户配置、系统状态、数据库连接和自定义开发等。通过结合 ST22、SM21 等诊断工具,以及完善的代码实践和系统监控,可以有效预防和解决此类问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1781

【Go语言实战】(2) Gin+Vue 电子商城

618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗??

面向生活编程 4827

最长连续递增子序列长度和最长不连续递增子序列长度

最长连续递增子序列长度和最长不连续递增子序列长度 1.最长连续递增子序列 例如:Array[6] = {1,5,2,4,3,8} 其最长连续递增子序列就2,4或3,8,最长长度为2 设数组dp[i],表示以i为结尾的最长连续子序列长度,即上述数组的dp数组即为 dp[6] = {1,1,1,2,1,2} 代码如下 #include&lt;iostream&gt; using namespace s...

QingtianD的博客 4649

华为OD机试2025A卷 - 用户调度问题(Java & Python& JS & C++ & C )

题目要求每个用户依次选择当前所能选择的最小资源消耗策略,并且若有多个策略的资源消耗相同,则选择最后一个策略。每个用户的选择是独立的,只考虑该用户的策略和相邻用户的约束,不考虑整个调度序列的全局资源消耗。每个用户根据自己的当前状态(即自己的三种选择的资源消耗)做出局部最优选择:在当前可选的策略中,选择消耗最小的那个。如果有多个最小值,则选择最后一个(根据题意)。这一选择是局部的最优,即在当下最有利的选择,但并不保证最终的整体系统资源消耗是最小的。

算法大师! 1万+

【Code皮皮虾】求最长递增子序列的个数 不是长度哦(手动滑稽)!!!

文章目录????毛遂自荐✨题目????题外话????正经点,解题思路????代码实现????最后 Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭???? ????话不多说,直达底部有粉丝专享福利!!! ????毛遂自荐 毛遂自荐一下,给大家推荐一下自己的专栏????,欢迎小伙伴们收藏关注???? 大厂面试题专栏 Java专栏 爬虫专栏 更多专栏尽在主页,点我????!!! ✨题目

Code皮皮虾的博客 5380

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

动态规划-求一个字符串的最长递增子序列的长度

求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入描述: 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出描述: 输出字符串的最长递增子序列的长度 样例输入: 复制 3 aaa ababc abklmncdefg 样例输出: 1 3 7 分析:求字符串的最长递增子序列,可...

yingmu__的博客 1737

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

求最长递增子序列个数——C++

​由于上一篇博客已经分析过求最长上升子序列长度——C++的经典LIS问题,该题是求最长增长子序列个数,经过分析,这题也只是经典LIS(Longest Increasing Subsequence)问题的变种,也就是用同样的LIS框架,区别在于本体需要额外记录每个最长子序列个数。下面是具体实现思路。 用dp[i]记录最长子序列长度maxLen,count[i]记录最长子序列个数,其中i表示数组的元素个数,0 <= i < n;如果求出前dp[i]和count[i]的i-1元素的值,则可以推导出:1.2代码实现

净无邪博客 3010

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 滑雪-DP
下一篇: Libpcap开发集介绍
Scutware
博客等级 码龄14年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值