Zigzag (最长交替子序列)

2023-05-16

Zigzag (最长交替子序列)

Your Ph.D. thesis on properties of integer sequences is coming along nicely. Each chapter is on a different type of sequence. The first covers arithmetic sequences. Subsequently you cover binomial sequences, computable sequences, decreasing sequences, and so on. You have one more chapter to write, on zigzagging sequences. A sequence is zigzagging if adjacent elements alternate between strictly increasing and strictly decreasing. The first pair of numbers can be either strictly increasing or strictly decreasing. For a given sequence, find the length of its longest zigzagging subsequence.

Input

The first line of input contains a single integer n (1 ≤ n ≤ 50), the length of the sequence. The second line contains n space-separated integers, describing the sequence. Every number in the sequence is guaranteed to be between 1 and 50, inclusive.

Output

Print, on a single line, the length of a longest zigzagging subsequence of the input sequence

 

Sample Input

5 2 1 3 4 2

Sample Output

4

Sample Input

10 1 1 1 1 1 1 1 1 1 1

Sample Output

1

 

题意:给一个序列,求最长交替子序列,就是一个大数一个小数,例如:1 5 1 5 1 5; 1 8 2 4 3 6。注:可以不连续。

思路:类似于最长上升子序列,需要开两个dp,dp1记录最长上升子序列,dp2记录最长下降子序列。 

想象一下每个点之前都连接了一条线,分为上升线和下降线。 如果是上升线那么下一次需要连接下降线的点。

例如 : 2 1 3 4 0,  其中dp1[3]=2 表示 上升线连接到了节点三,此前已经有2个点连成了拉链序列,下一步需要连接下降线。

 

代码:

#include <bits/stdc++.h>

using namespace std;

int dp1[55]; // 下降线
int dp2[55]; // 上升线
int a[55];
int n;

int main()
{
    int i,j;
    cin >> n;
    for ( i=0; i<n; i++ ) {
        cin >> a[i];
        dp1[i] = dp2[i] = 1; // 初始化为1
    }

    for ( i=0; i<n; i++ ) { // 两个for类似于最长上升子序列
        for ( j=0; j<i; j++ ) { //不懂的先去看最长上升子序列
            if ( a[j]<a[i] ) { // 这需要用一个上升线来连接两个节点。
                dp2[i] = max(dp2[i],dp1[j]+1); // 比较i的上升线 和 j的下降线+1
            }
            else if ( a[j]>a[i] ) {
                dp1[i] = max(dp1[i],dp2[j]+1); // 类上
            }
        }
    }
    int ans = 0;
    for ( i=0; i<n; i++ ) {
        ans = max(ans,dp1[i]);
        ans = max(ans,dp2[i]);
    }
    cout << ans << endl;

    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zigzag (最长交替子序列) 的相关文章

  • 在gazebo仿真环境下对相机和激光雷达的标定

    相机和激光雷达的标定主要是为了得到两者之间的参数 xff0c 包括相机的内参和雷达到相机的外参 这样便可以完成点云到图像的投影 xff0c 从而完成信息融合 实际上gazebo中这些参数都是真值 xff0c 是不需要标定的 xff1a 相机
  • 深度学习模型过拟合问题解决办法

    深度学习模型过拟合问题解决办法 模型过拟合 xff08 如果训练集上精度比测试集上精度高很多 xff0c 说明发生了过拟合 xff09 如上图所示拟合曲线 1 图一的拟合较为简单 xff0c 不能很好的反应出变化关系 xff0c 欠拟合 2
  • strchr()函数

    如果需要对字符串中的单个字符进行查找 xff0c 那么应该使用 strchr 或 strrchr 函数 其中 xff0c strchr 函数原型的一般格式如下 xff1a char strchr const char s int c 它表示
  • MapReduce之Map阶段

    MapReduce阶段分为map xff0c shuffle xff0c reduce map进行数据的映射 xff0c 就是数据结构的转换 xff0c shuffle是一种内存缓冲 xff0c 同时对map后的数据分区 排序 reduce
  • 嵌入式开发常用的三种通信协议串口通信、SPI和IIC

    常用的三种通信协议串口通信 SPI和IIC 文章目录 常用的三种通信协议串口通信 SPI和IIC一 通信分类1 1 同步通信和异步通信1 2 单工通信 半双工通信和全双工通信1 3 串行通信与并行通信 二 串口通信2 1 UART2 2 R
  • HTML 解决css缓存

    span class token operator lt span link rel span class token operator 61 span span class token string 34 stylesheet 34 sp
  • Ubuntu18.04安装Nvidia显卡驱动教程

    0 前期准备 禁用BIOS的secure boot xff0c 即disable它 xff0c 如果不关闭 xff0c 使用第三方源安装显卡驱动会安装后不能使用 1 禁用nouveau 1 创建文件 xff0c 如果没有下载vim编辑器 x
  • VINS之estimator节点小结

    VINS的核心节点 xff0c 包括VIO的初始化过程 紧耦合的非线性化过程 边缘化处理过程 主要流程步骤 1 主函数线程 订阅了四个topic xff0c 分别调用回调函数 xff1b 创建了13个话题发布器 xff1b 开辟了一个VIO
  • 基于布谷鸟搜索算法的函数寻优算法

    文章目录 一 理论基础1 算法原理2 算法流程图 二 Matlab代码三 参考文献 一 理论基础 1 算法原理 布谷鸟采用一种特殊的寄生宿主巢穴的方式孕育繁殖 它将孵育的蛋置入寄生宿主的巢穴 xff0c 让寄生宿主孵化布谷鸟蛋 由于布谷鸟幼
  • 基于逐维反向学习的动态适应布谷鸟算法

    文章目录 一 理论基础1 布谷鸟搜索算法2 DA DOCS算法 xff08 1 xff09 逐维反向学习策略 xff08 2 xff09 动态适应 xff08 3 xff09 DA DOCS算法流程 二 实验与结果分析三 参考文献 一 理论
  • SMPL学习笔记

    文章目录 前言一 SMPL概述1 形状参数 beta 2 姿态参数
  • 多协议BGP-----MPBGP

    MPBGP是在BGP 4 基础上的扩展 xff0c 分为三种 xff1a ipv4 ipv4 ipv6 ipv6 ipv6 ipv4 ipv4 ipv6 本文主要介绍 xff1a ipv6 ipv4 xff08 在 建立ipv6 的BGP邻
  • __asm void MSR_MSP(uint32_t addr) 提示:error:expected '(' after 'asm'

    SYSTEM sys sys c 33 7 error expected 39 39 before 39 void 39 ASM void MSR MSP u32 addr 在STM32中的sys c文件编译报出这个错误时 xff1a AS
  • LTL线性时序逻辑

    https blog csdn net yuniruchujian article details 106213848https www docin com p 506137477 html
  • 强化学习资料

    强化学习资料 莫烦学习资料 莫烦学习资料 https mofanpy com bilibili视频资料 xff1a https www bilibili com video BV13W411Y75P from 61 search amp s
  • apollo学习

    知乎王方浩 https zhuanlan zhihu com p 52521739 csdn https blog csdn net u013914471 type 61 blog bilibili 忠厚老实的老王 https space

随机推荐

  • 求解离散黎卡提矩阵代数方程

    离散代数黎卡提方程求解 1 黎卡提方程 在LQR最优控制中 xff0c 有连续时间最优控制 xff0c 即LQR xff0c 也有离散时间最优控制DLQR xff0c 则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题 xf
  • 基于运动学模型的无人机模型预测控制(MPC)-2

    基于无人机自身模型的模型预测控制 无约束情况 1 模型建立 无人机运动学模型 xff1a x
  • 一阶低通滤波器-连续转离散

    一阶低通滤波器 1 一阶连续低通滤波器 y s r
  • 汽车动力学模型

    1 动力学模型 在纵向时 xff0c 可能还会受到纵向空气阻力 xff0c 前轮滚动阻力 xff0c 后轮滚动阻力 xff0c 坡道重力分量等
  • PX4飞控源码及解析

    源码地址 xff1a https github com 987419640 Firmware 解析 xff1a https dev px4 io zh concept architecture html
  • Hadoop:简介和安装

    Hadoop简介 Hadoop项目由多个子项目组成 与其他项目不同 xff0c 这个项目更像一个生态系统 其中 xff0c 核心项目包括HDFS MapReduce框架 YARN和ZooKeeper HDFS是一个符合Hadoop要求的分布
  • centos6.x如何安装docker

    1 curl Lks https yum spaceduck org kernel ml aufs kernel ml aufs repo gt etc yum repos d kernel ml aufs repo 2 yum remov
  • c#开发Windows桌面程序,支持触摸屏

    这是一段由new bing聊天机器人提供的代码 xff0c 我没有测试是否能正常运行 xff0c 请谨慎使用 我是这样提问的 xff1a 我想用c 开发一款Windows桌面程序 xff0c 这个程序支持触摸屏 xff0c 这个程序打开后要
  • 七. (《Java核心技术》读书笔记+重点整理系列)异常处理、断言和日志

    目录 异常分类抛出异常捕获异常断言记录日志调试技巧PS 异常分类
  • IAR for ARM 无法烧写

    一直用的IDE都是Keil xff0c 最近需要用到的一款芯片只有IAR这一种环境可以从Demo里直接用 xff0c 所以用到了IAR xff0c 但发现自己装好了IAR xff08 版本8 32 1 xff09 并破解后 xff0c 编绎
  • ADC采集的数据通过串口进行发送 (2)

    1 xff09 在RIDE板子上调通的基础上 xff0c 硬件替代成CJ 575板 在后面步骤中并开始将代码中的硬件配置部分给对应成CJ 575板子的ARM9芯片的配置 2 xff09 将ADC CHANNEL和ADC CHANNEL MO
  • 相机成像模型、内参矩阵、外参矩阵

    相机针孔成像模型 基本的小孔成像过程 xff1a X坐标系是针孔所在坐标系 xff0c Y坐标系为成像平面坐标系 xff0c P为空间一点 xff0c 小孔成像使得P点在图像平面上呈现了一个倒立的像 xff0c 俯视图如下 xff1a 由三
  • YUM安装nginx

    想在 Alibaba Cloud Linux 3 2104 64位 CentOS 系统上安装 Nginx xff0c 你得先去添加一个资源库 xff0c 像这样 xff1a vim etc yum repos d nginx repo 使用
  • PX4固件在Gazebo下进行SITL仿真自己的包时遇到MODE: Unsupported FCU问题

    在运行别人的的px4代码时 xff0c 比如一个包Base control中 xff0c 终端提示了MODE Unsupported FCU xff0c 该错误主要是因为端口不正确 xff0c mavros没能正确的连接到px4固件 xff
  • 学习OpenCV在SFM系统的使用

    文章目录 OpenCV构建SFM模型SFM的概念从一对图像估计相机运动使用丰富特征描述符的点匹配利用光流进行点匹配寻找相机矩阵场景重建从多个场景重建重构的细化使用PCL可视化3D点云使用实例代码 本文是翻译自经典书籍Mastering OP
  • ROS无人机自主飞行(数传与串口)与PX4配置问题

    ROS无人机自主飞行与PX4配置问题 文中引用均为参考 xff0c 部分内容转载 xff01 特感谢提供了参考 xff01 PX4的配置 首先需要对PX4烧写固件 xff0c 版本问题上其实没有很多区别 xff0c 目前我所用的最新版本 1
  • js 如何删除对象整的key值

    采用delete进行删除 js 的delete可以根据key删除对象中的元素 var obj 61 定义一个对象 obj a 61 1 obj b 61 2 delete obj 39 a 39 打印obj b 2 delete a b 打
  • MSCKF-VIO源码框架及C++知识点总结

    MSCKF VIO源码框架及C 43 43 知识点总结 摘要MSCKF VIO程序架构前端前端流程图函数功能解读前端各主要函数模块耗时分析 后端后端流程图函数功能解读后端各主要函数模块耗时分析 运行过程分析 ROS里的信息流图C 43 43
  • 基于CNN(LeNet)的垃圾分类(C语言实现)

    基于CNN xff08 LeNet xff09 的垃圾分类 xff08 C语言实现CNN算子 xff09 一 先使用python训练模型二 提取参数提取模型参数提取图片 三 编写CNN算子在windows中实现在FPGA中实现 xff0c
  • Zigzag (最长交替子序列)

    Zigzag xff08 最长交替子序列 xff09 Your Ph D thesis on properties of integer sequences is coming along nicely Each chapter is on