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

关于动态规划【力扣300.最长递增子序列的思考】

1、有问题的时候,打印dp数组,看一下问题在哪里。

(打印数组代码,如下图所示)

(解答错误,如下图所示)

上面两个【解答错误】说明:初始化没问题,但是dp数组里的值没有更新。

说明递推关系有问题,没有正确计算dp数组的值。

(定位问题,如下图所示)

(解决问题,修改代码,如下图所示)

2、dp数组的定义很重要

问题一:怎么在阅读题目的时候,确定dp数组的含义?

问题二:dp数组是用一维还是二维?

问题三:dp数组是用一维的一个变量还是两个?

回答上述三个问题的第一个问题:看题目的问题是什么,这题是要找到一个东西的长度。那么就让dp数组的含义为【最长递增子序列的长度为dp[]】。

回答上述三个问题的第二个问题:比如:0-1背包问题是如果选了一个物品,状态改变的对象有物品和书包两个。物品的状态由没被选变成了被选,书包的状态由没加这个物品的重量变成了加了这个物品的重量。本题在找最长递增子序列的时候,只会影响一个对象:最长子序列的长度。遍历到了下一个新的位置,最长子序列的长度又有可能变了,但是变的对象只有这一个。所以dp数组选用一维的。

回答上述三个问题的第三个问题:本题用了dp[i]和dp[j],用了两个变量i和j。首先,由第二个问题的回答(遍历到了下一个新的位置,最长子序列的长度又有可能变了)可知,每移动到下一个位置,最长子序列的长度就有可能会变。所以dp[i]表示数组下标从0到i,截止位置i的最长子序列长度为dp[i]。但是因为i每往后移动一位,都会引进一个新的数字,这个数字可能会对最长子序列长度的计算有影响,所以要用第二个变量j来表示这个影响。用dp[i]表示当前最长子序列的长度,j遍历数组下标从0到i,dp[j]表示在当前截止位置i之前已经统计过的到截止位置j的最长子序列的长度。在前面统计过的dp[j]基础上计算dp[i]。所以要用两个变量。

http://www.gsyq.cn/news/1617911.html

相关文章:

  • 华为MetaERP Oracle EBS R12 AP 供应商主数据完整配置指南(架构师实施版)一、前置基础配置(必须先完成,否则供应商无法正常使用)(一)财务选项 Financials Opti
  • 给制造以光,让智造有根:中策橡胶卓越智能工厂背后的F5G-A全光力量
  • 基于树莓派的边缘计算安全网关设计与实现
  • 2026燃油车底盘整备调校,选对修理厂事半功倍
  • 5分钟学会免费音乐解锁:打破平台限制的完整指南
  • Walmart SDE Interview Experience 三轮 VO 高频面经 | System Design + BQ + 算法 稳稳拿 Offer(2026)
  • 【第 9 篇:本地化部署——从 0 到 1 的企业级系统部署全记录】
  • 导师严选!盘点2026年备受推崇的的AI智能降重工具
  • Linux基础文件与目录命令实操实验报告
  • FPG财盛国际:围绕服务体系与外汇用户支持体系的路径解读
  • 零API费用的金融AI技能库:104个场景纯Python实现,毫秒级响应
  • DVWA 靶场 SQL 注入实战心得:从手工检测到布尔盲注自动化利用全流程详解
  • 2026广州高端宣传片拍摄团队怎么选?广州AIGC企业视频制作机构盘点
  • 还在手敲数据库三线表?这个SQL自动生成法,建议直接收藏!
  • 三台迷你主机硬跑70B大模型!场面十分尴尬
  • AI Agent 工程师面试题 200 题(codex出品)
  • THPX信号源:把合规意识做到位——细节分析与提示整理
  • 《小程序网站翻译:全球化征程中的关键一环》
  • 802.1X 认证技术指南
  • 第一次学 Neo4j,我终于明白 Agent 为什么不只用 MySQL
  • leecodecode【面试150】【2026.6.26-7.1打卡-java版本】
  • 前端转大模型:页面开发到 AI 产品工程师,从方案设计到上线检查
  • 絮絮叨叨一点工作的东西
  • CSDN Markdown编辑器使用指南
  • 通达信缠论自动化分析:3步实现智能K线识别与交易信号生成
  • 直播缺主播、成本高?启智数字人直播,济南商户低成本长效获客
  • PyPDF2与pdfplumber:PDF文件处理
  • 【极简监控专栏·番外随笔】零收益、挂考试,我为什么还要耗时一年建起这座“技术高塔”?
  • AI率爆表怎么办?10款AI智能降重工具实测(含免费降ai率工具)真实避坑指南
  • 深圳钣金外壳定制厂家产品优势