当前位置: 首页 > news >正文

【晴问算法】提高篇—动态规划专题—最长上升子序列

题目描述

现有一个整数序列a1,a2,...,an​​​​​​,求最长的子序列(可以不连续),使得这个子序列中的元素是非递减的。输出该最大长度。

输入描述

第一行一个正整数n(1≤n≤100​​​​),表示序列长度;

第二行为用空格隔开的n​个整数ai​(−10^5≤ai≤10^5​​),表示序列元素。

输出描述

输出一个整数,表示最大长度。

样例1

输入

7

1 2 3 -1 -2 7 9

输出

5

解释

最长上升子序列为1 2 3 7 9,长度为5

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int dp[MAXN];//dp[i]表示以a[i]元素为结尾的最大连续子序列和
int a[MAXN];//存放序列元素int main(){int n;//序列长度cin >> n;for(int i=0;i<n;i++){cin >> a[i];}dp[0] = 1;for(int i=1;i<n;i++){//对于每个位置i,要找到以a[i]结尾的最长递增子序列长度dp[i]dp[i] = 1;//初始化为1,因为至少可以构成一个长度为1的子序列for(int j=0;j<i;j++){//检查是否可以将a[i]加入到以a[j]结尾的递增子序列中if(a[i] > a[j]){//说明a[i]可以接在以a[j]结尾后dp[i] = max(dp[j] + 1,dp[i]);//dp[j]+1表示接在了以a[j]结尾的子序列长度,更新以a[i]结尾的子序列长度}}}int ans = 1;for(int i=1;i<n;i++){//不是输出最后一个dp元素,因为最后一个元素不一定在递增子序列中if(ans < dp[i]){//遍历寻找以a[i]结尾最大的子序列ans = dp[i];}}printf("%d",ans);return 0;
}

http://www.lryc.cn/news/321514.html

相关文章:

  • 天软特色因子看板(2024.3第5期)
  • 静态网络配置
  • 多种智能搜索算法可视化还原 3D 魔方
  • Maven,pom.xml,查找 子jar包
  • MySQL中数据库表的监控
  • 【S5PV210_视频编解码项目】裸机开发2:实现PWM波形驱动蜂鸣器
  • js进阶-深入对象-内置构造函数-包装类
  • Linux作业
  • 信息发布系统
  • Dell Inspiron 戴尔灵越16plus7620升级M2硬盘
  • 视频怎么转mp4格式?分享3个宝藏方法,轻松学会
  • Javascript 元二分搜索 | 单边二分查找(Meta Binary Search | One-Sided Binary Search)
  • 柚见十三期(优化)
  • Node.js常用命令:了解Node.js的核心命令和用法
  • QT 驾校系统界面布局编写
  • 【Auth Proxy】为你的 Web 服务上把锁
  • Docker 从0安装 nacos集群
  • keithley2612A数字源表
  • AI助手 - 月之暗面 Kimi.ai
  • 《计算机考研精炼1000题》为你考研之路保驾护航
  • el-input添加keyup事件无响应
  • 错误1075:依存服务不存在, 或已标记为删除的解决方法
  • 【Python】使用selenium对Poe批量模拟注册脚本
  • 【Linux】编译器-gcc/g++的使用(预处理、编译、汇编、连接)
  • 【Linux】Linux安装软件---软件包管理器 yum
  • QT网络编程之获取本机网络信息
  • 离线安装docker、docker-compose、Mysql镜像
  • Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
  • 数据库基本介绍及编译安装mysql
  • 代码随想录算法训练营第55天 | 583. 两个字符串的删除操作, 72. 编辑距离