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

B3637 最长上升子序列

题目链接:

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5050;

int n;
int arr[N];
int dp[N]; //dp数组

signed main(){
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> arr[i];
    
    for(int i = 1; i <= n; i++){
        //对dp数组初始化 每个数字都是长度为1的序列
        dp[i] = 1;
        for(int j = 1; j<i; j++){
            //满足上升条件
            if(arr[j] < arr[i]){
                //题目要求最长 因此max取最长
                dp[i] = max(dp[i], dp[j]+1);
            }
        }
    }
    
    int ans = 0;
    for(int i = 1; i <= n; i++) ans = max(ans, dp[i]);
    cout << ans << endl;
    return 0;
}

注:

dp[i] = max(dp[i], dp[j]+1); 
为什么要和dp[i]比较? 因为j是从1枚举到i-1的,因此,如果其中arr[j]符合,那么dp[i]就被赋值为dp[j]+1了,但是题目要求我们求得是最长的上升子序列。因此,我们要从dp[i],dp[j]+1 之中取最大值。

相关文章:

  • 免备案手机网站杭州seo中心
  • 企业网站维护建设ppt报个计算机培训班多少钱
  • 凡科建站帮忙做网站免费私人网站建设
  • 用ps做网站切片百度客服人工电话多少
  • wordpress管理密码修改网站seo优化免费
  • 网站外包多少人做公司网站建设平台
  • OpenLayers:如何使用渐变色
  • 回归预测 | Matlab实现NRBO-Transformer-BiLSTM多输入单输出回归预测
  • 基于 Three.js 实现 3D 数学欧拉角
  • Multism TL494仿真异常
  • 玛卡巴卡的k8s知识点问答题(四)
  • Spring Boot 整合 ElasticJob 分布式任务调度教程
  • pycharm虚拟环境项目转移后配置解释器
  • Spring Boot整合Redis
  • SpringBoot分布式项目订单管理实战:Mybatis最佳实践全解
  • 通俗易懂的大模型原理
  • 【自学笔记】PHP语言基础知识点总览-持续更新
  • BFD 双向转发检测协议
  • 推荐系统(十八):优势特征蒸馏(Privileged Features Distillation)在商品推荐中的应用
  • epoch、batch、batch size、step、iteration深度学习名词含义详细介绍
  • 音视频入门基础:MPEG2-TS专题(25)——通过FFmpeg命令使用UDP发送TS流
  • 深度学习之丢弃法
  • 音视频 ColorSpace色彩空间详解
  • JS数组复制方法及注意事项
  • [BJDCTF2020]Mark loves cat [git泄露][变量覆盖漏洞]
  • Java单列集合[Collection]