最长递增子序列

最长递增子序列的另外一种C语言实现代码 最长递增子序列的另外一种C语言实现代码,大学算法导论课程实验 立即下载

最长递增子序列(递增子序列会了,递减子序列也就没问题了)

第一种思路:

a[i]在最长子序列的位置为dp[i]

dp[i]=max(1,dp[j]+1)  s.t. 0<=j<i  且a[j]<a[i]

第二种思路:

对a[i]排序的b[i]

求a[i]与b[i]的最长公共子序列

第一种思路代码:

#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iterator>
#include <algorithm>
using namespace std;
int a[100];
int b[100];
int ASC(int a[],int n)
{
    b[0]=1;
    int max=1;
    for(int i=1;i<n;++i)
    {
        int maxj=0;
        for(int j=0;j<i;++j)
        {
            if(a[j]<a[i]&&b[j]>maxj)maxj=b[j];
        }
        b[i]=maxj+1;
        if(max<b[i])max=b[i];
    }
    return max;
}
int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=0;i<n;++i)
        {
            cin>>a[i];
        }
        int max=ASC(a,n);
        cout<<max<<endl;
    }
    return 0;
}



第二种思路代码

#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iterator>
#include <algorithm>
using namespace std;
int a[100];
int b[100];
int arr[101][101]={0};
void AdjHeap(int arr[],int i,int n)
{
    int left=2*i+1,right=2*i+2;
    int maxi=i;
    if(left<n&&arr[left]>arr[maxi])
    {
        maxi=left;
    }
    if(right<n&&arr[right]>arr[maxi])
    {
        maxi=right;
    }
    if(maxi!=i)
    {
        int temp=arr[maxi];
        arr[maxi]=arr[i];
        arr[i]=temp;
        AdjHeap(arr,maxi,n);
    }
}
void Heap(int arr[],int n)
{
    for(int i=(n-1)/2;i>=0;--i)
    {
        AdjHeap(arr,i,n);
    }
    for(int i=n-1;i>0;--i)
    {
        int temp=arr[0];
        arr[0]=arr[i];
        arr[i]=temp;
        AdjHeap(arr,0,i);
    }
}

int LCS(int a[],int m,int b[],int n)
{
    int max=0;
    for(int i=0;i<m;++i)
    {
        for(int j=0;j<n;++j)
        {
            if(a[i]==b[j])
            {
                arr[i+1][j+1]=arr[i][j]+1;
            }
            else
            {
                arr[i+1][j+1]=arr[i][j+1]>arr[i+1][j]?arr[i][j+1]:arr[i+1][j];
            }
            if(arr[i+1][j+1]>max)max=arr[i+1][j+1];
        }
    }
    return max;
}

int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=0;i<n;++i)
        {
            cin>>a[i];
            b[i]=a[i];
        }
        Heap(b,n);
        int max=LCS(a,n,b,n);
        cout<<max<<endl;
    }
    return 0;
}


树莓派小车:智能捡球小车——Q宝 在遇到第一个直角右转口后,进入阶段二,阶段二是智能小车减速,因为速度过快可能导致车头下方的检测出现小毛病,小车进入第一个左拐路口,增加左转时间,然后直行,到横线处,小车停止,进入阶段三,小车先识别前方的球类,然后倒车到拐口处,原地右转,之后的识别也是类似的操作,随后有一个简单的避障功能,进行球类识别测试时,在本地测试效果良好,但是投入实际应用中时,受到光线等因素的影响,识别球类的能力大大下降。小车摄像头精度不够,视角较小,在识别人脸时,需要不断移动人脸照片,让摄像头能够抓取人脸。在第一阶段的循迹过程中, 阅读详情

相关推荐

银河麒麟鲲鹏aarch64架构安装docker和K8s

鲲鹏云服务器上安装docker-云社区-华为云 (huaweicloud.com) 这里我下载的版本是docker-18.09.3.tag docker 安装包地址:https://download.docker.com/linux/static/stable 配置system服务 在github对应分支的contrib/init/systemd/ 下面,提供了对应的docker.service以及docker.socket文件,可以直接拷贝到本地文件使用: 对应链接:https://github.c

qq_50007696的博客 9054

最长递增子序列问题(你真的会了吗)

1.对应牛客网链接2.题目描述: 3.解题思路下面以[5,7,1,9,4,6,2,8,3]为例:4.对应代码:1.对应牛客网链接:2.题目描述: 3.解题思路:4.对应代码:1.对应letecode链接:2.题目描述:3.解题思路4.对应代码:...

qq_56999918的博客 9635

2021年软件测试面试题大全

简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(主要参与人员:开发、测试、产品、测试leader)。 6、开发提交代码至SVN或者GIT ,配管搭建测试环境。 7、执行测试用例,记录发现的问题。 8、验证bug与回归测试。 9、编写测试报告。 10、产品上线。 补充测试用例设计过程: 根据需求得出测试需求 设计测试方

hard_days的博客 20万+

如何给dropdownlist动态赋初始值_动态规划设计方法:归纳思想解决 LIS

读完本文,你可以去力扣拿下如下题目:300.最长上升子序列-----------也许有读者看了前文 动态规划详解,学会了动态规划的套路:找到了问题的「状态」,明确了 dp 数组/函数的含义,定义了 base case;但是不知道如何确定「选择」,也就是不到状态转移的关系,依然写不出动态规划解法,怎么办?不要担心,动态规划的难点本来就在于寻找正确的状态转移方程,本文就借助经典的「最长递增子序列问题」...

weixin_39619635的博客 623

从零开始:如何在Windows上搭建Airsim仿真环境(避坑指南)

本文是一份详细的Windows平台AirSim仿真环境搭建指南。文章从硬件要求、Visual Studio与虚幻引擎安装开始,逐步讲解AirSim插件编译、UE项目配置,并重点介绍了通过WSL2连接PX4飞控软件实现软件在环仿真的完整流程。内容涵盖常见问题排查与性能优化,旨在帮助开发者避开常见陷阱,高效构建可用于无人机算法开发的虚拟测试平台。

earth的博客 300

深入解析UEFI PEI阶段:PeiCore的三次调用与内存管理机制

本文深入解析UEFI启动流程中的PEI阶段,重点探讨PeiCore的三次调用与内存管理机制。详细介绍了PeiCore在临时内存中的初始化、堆栈切换至永久内存的过程,以及最终交接给DXE阶段的关键步骤,为开发者提供调试技巧与实战案例,助力解决UEFI启动问题。

weixin_28452161的博客 649

动态规划——子序列问题

比如上面示例2,如果 i 位置元素是11,那么它的前面可以是1,3,7等等,无法确定它前面具体是哪一个元素。dp[i][j]:表示以 i 位置元素和 j 位置元素为结尾的最长的斐波那契子序列的长度。(其中规定i < j)。f[i]:表示以 i 位置元素为结尾的所有子序列中,最后一个位置呈现上升趋势的最长摆动序列的长度。g[i]:表示以 i 位置元素为结尾的所有子序列中,最后一个位置呈现下降趋势的最长摆动序列的长度。显然是不能的,因为它的公差是不能确定的,我们至少需要两个数才能确定公差,进而去推出其他的数。

zdlynj的博客 4842

Android影像系统架构专家面试指南

传音控股招聘影像系统架构专家,要求8年以上开发经验,5年架构设计经验,精通Android Camera开发及性能优化。该职位需负责手机影像软件架构设计、技术选型及跨平台适配,重点解决"快稳省"体验优化。面试评估聚焦三大维度:技术方面考察HAL层架构设计、多帧合成优化等能力;系统开发关注低光降噪等场景的算力平衡;团队管理侧重跨部门协作与项目交付。候选人需展现对CamX-CHI等架构的深入理解,具备量化分析性能指标的能力,并能主导旗舰机影像项目全周期落地。

郑伟强dev的专栏 938

leetcode:300. 最长递增子序列

题目来源 leetcode:300. longest-increasing-subsequence最长递增子序列 题目描述 题目解析 题意: 需要对「子序列」和「子串」这两个概念进行区分; 子序列(subsequence):子序列并不要求连续,例如:序列 [4, 6, 5] 是 [1, 2, 4, 3, 7, 6, 5] 的一个子序列; 子串(substring、subarray):子串一定是原始字符串的连续子串 题目中的「上升」的意思是「严格上升」。反例: [1, 2, 2, 3] 不能算作

OceanStar的博客 3090

电磁场仿真软件:COMSOL Multiphysics_(17).时域与频域分析

时域和频域分析是电磁场仿真中非常重要的两种方法,每种方法都有其独特的应用场景和优势。时域分析适用于瞬态响应和宽带信号的分析,而频域分析则适用于稳态响应和窄带信号的分析。在COMSOL Multiphysics中,通过合理设置物理场接口、材料属性、边界条件、网格划分和求解器,可以高效地进行这两种分析,并通过傅里叶变换将时域结果转换为频域结果,进一步拓展仿真应用的范围。合理的性能优化措施,如网格划分优化和并行计算,可以显著提高仿真的效率和准确性。

kkchenjj的博客 1974

如何用libwebsocket库在stm32F407上实现websocket客户端?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1133

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

最长连续递增子序列长度和最长不连续递增子序列长度 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的博客 4648

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1390

【Java】最长递增子序列

问题描述  LIS(Longest Increasing Subsequence,最长递增子序列):给出一个序 列a1,a2,a3,a4,a5,a6,a7…an,求它的一个子序列(设为s1,s2,…sn),使得这个 子序列满足这样的性质,s1<s2<s3<…<sn并且这个子序列的长度最长。 • 【任务】输出这个最长子序列的长度。 • 【样例输入】 1 7 3 5 9 4 ...

weixin_43927892的博客 2091

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

最长递增子序列问题【C++】

最长递增子序列问题

weixin_49932603的博客 3085

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

动态规划之最长递增子序列

求一个数组的最长自增子序列,示例: 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。 #include<iostream> //最长递增子序列 //dp[i]表示以a[i]这个元素结尾的最长递增子序列的长度 int max(int a,int b){ return a > b ? a : b; } int...

1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最长递增子序列的三种算法

转载自:http://qiemengdao.iteye.com/blog/1660229 最长递增子序列   问题 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.   解法1:最长公共子序列法 这个问题可以转换为最长公共子序...

小灰狼与大白兔的博客 3万+

最长递增子序列&&最长连续递增子序列

最长递增子序列算法尚有缺陷,不能输出所有最长递增子序列 最长递增子序列: #include<iostream> using namespace std; void PrintMaxSubSeq(int flag, int i, int *a, int *prev) { if (prev[i] == i) { cout << a[i] << " "; re...

Masqueradey的博客 310

求出数组的最长递增子序列(LIS)的长度和给出一个最长递增的子序列。

给定一个序列1,7,3,5,9,4,8.递增子序列为1,7是一个,1,3,5也是一个。但是最长的那个是1,3,5,8。 如何求出最长递增子序列的长度和最长递增子序列。 我们假设已经求出前N的递增长度子序列的长度了。求N+1的时候,n+1项的数据直接和前N项的数据挨个比较,然后找出前N的递增长度子序列长度最大的加1就行了。求递增子序列就是该过程的逆过程。找出递增最大的项M数据,然后减一,找前面的...

weixin_41157881的博客 2184

最长递增子序列问题

一 问题描述 设序列L = 是长度为n的序列,L的一个递增序列描述为:, 其中下标序列 是 递增的, 子序列 也是递增的。此递增序列的长度为 k 二 解法1, 转化为LCS问题 先把序列 L 按照从小到大的顺序排列, 得到另一个序列S,再求L和S的最长公共子序列

kenby的专栏 1万+
上一篇: 背包问题
下一篇: 树的非递归遍历
WayToAccept
博客等级 码龄14年 21粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值