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

leetcode 困难题 1458. Max Dot Product of Two Subsequences 两个子序列的最大点积

Problem: 1458. Max Dot Product of Two Subsequences 两个子序列的最大点积

动态规划的呢,dp[i][j]表示nums1的0-i-1前缀和nums2的0-j-1前缀的最大点积

初始化,最开始dp所有元素都是INT_MIN/10,考虑到子串非空,然后赋值的dp[1][1] = nums1[0] * nums2[0];

for(int i = 2; i <= n; i++) dp[i][1] = max(dp[i-1][1], nums1[i-1] * nums2[0]);,也就是考虑nums1[i-1]得到nums1[i-1] * nums2[0],以及不考虑nums1[i-1]得到 dp[i-1][1]

for(int i = 2; i <= m; i++) dp[1][i] = max(dp[1][i-1], nums1[0] * nums2[i-1]);也就是考虑nums2[i-1]得到nums1[0] * nums2[i-1],以及不考虑nums2[i-1]得到 dp[1][i-1]

递推公式是:

dp[i][j] = max({dp[i-1][j], dp[i][j-1], dp[i-1][j-1]+nums1[i-1]*nums2[j-1], dp[i-1][j-1], nums1[i-1]*nums2[j-1]});

也就是不考虑nums1[i-1]的dp[i-1][j]

不考虑nums2[j-1]的dp[i][j-1]

同时考虑nums1[i-1]和nums2[j-1]的dp[i-1][j-1]+nums1[i-1]*nums2[j-1]

同时不考虑nums1[i-1]和nums2[j-1]的dp[i-1][j-1]

不考虑 dp[i-1][j-1] 的 nums1[i-1]*nums2[j-1]

Code

class Solution { public: int maxDotProduct(vector<int>& nums1, vector<int>& nums2) { int n = nums1.size(), m=nums2.size(); vector<vector<int>> dp(n + 1, vector<int>(m + 1, INT_MIN/10)); dp[1][1] = nums1[0] * nums2[0]; for(int i = 2; i <= n; i++) dp[i][1] = max(dp[i-1][1], nums1[i-1] * nums2[0]); for(int i = 2; i <= m; i++) dp[1][i] = max(dp[1][i-1], nums1[0] * nums2[i-1]); for(int i = 2; i <= n; i++) { for(int j = 2; j <= m; j++) { dp[i][j] = max({dp[i-1][j], dp[i][j-1], dp[i-1][j-1]+nums1[i-1]*nums2[j-1], dp[i-1][j-1], nums1[i-1]*nums2[j-1]}); } } return dp[n][m]; } };
http://www.jsqmd.com/news/518558/

相关文章:

  • 用Go写个命令行AI客户端,到底值不值?
  • 告别Elasticsearch!用SkyWalking 10.0.1 + BanyanDB + Docker搭建新一代链路监控(含IDEA/Java-Jar双启动配置)
  • 基于同步旋转坐标系的高效无位置传感器永磁同步电机控制策略——采用三相电压重构,告别传统电压采集...
  • leetcode 1460. Make Two Arrays Equal by Reversing Subarrays 通过翻转子数组使两个数组相等-耗时100
  • 智能汽车视觉导航(4)——基于动态阈值的赛道中线精准定位
  • 国产电车的意外惊喜,油价将重回9元拯救电车,但无法指望海外
  • 告别普通CardView!用MaterialCardView这5个属性,让你的Android应用卡片颜值飙升
  • 别再只会git push了!用-u参数关联远程分支,让Git协作效率翻倍
  • 基于Simulink和Carsim的车辆主动悬架防侧翻控制项目报告
  • 解决前端TIFF预览难题:tiff.js与canvas/base64的完美结合
  • 编写程序让智能空气质量仪检测PM2.5,分等级显示空气质量,给出开窗通风的建议。
  • Element UI中el-tabs的before-leave钩子实战:如何优雅拦截未保存表单的切换请求
  • AI Agent框架选型:OpenClaw、LangChain、AutoGPT、CrewAI,到底该选哪个?
  • OBS Studio直播软件下载安装图文教程:2026直播录制必备软件 - xiema
  • 从BDD到Cucumber:如何用行为驱动开发提升团队协作效率(附实战案例)
  • 从Polar CTF 2024春季赛看Web安全实战:PHP反序列化与SQL注入攻防解析
  • 生物信息学避坑指南:用Singularity重建可复现分析环境的3个关键技巧
  • 麒麟系统v10 SP3上MariaDB的5个隐藏技巧,新手必看!
  • 编写程序实现智能饮水机水温检测,水温适用饮用时,绿灯常亮,不用试水温。
  • KD-Tree 学习笔记
  • 手把手教你写一个简单的油猴脚本:以实验室安全考试自动答题为例
  • COMSOL光学波导传输仿真 光纤等波导的三维弯曲 模场分布 波束包络方法 FDTD计算模式弯曲损耗
  • 编写程序实现智能快递柜湿度检测,湿度过高,提示“防潮”,保护包裹内物品。
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的杂草检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • 手把手教你学Simulink——基于Simulink的滑模控制(SMC)抗参数摄动PMSM驱动
  • 避坑指南:QEMU网络桥接配置中,tap0创建失败和br0没IP的常见问题解决
  • PyCharm Community最新版安装避坑指南:从下载到首次运行的完整流程
  • ROS2 CLI命令大全:接口查看与自定义的终极效率指南
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的猫狗品种检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • 手把手教你学Simulink——基于 Simulink 的 LQR 最优电流跟踪控制器设计