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

力扣3290.最高乘法得分

力扣3290.最高乘法得分

递归 + 记忆化搜索

  • 对于b数组,从右往左考虑取不取如果取则问题变成b[0] ~ b[i-1]间找j - 1个数

    • 如果不取,则问题变成b[0] ~ b[i]间找j个数
    • 即dfs(i,j) = max(dfs(i-1,j) , dfs(i-1,j-1) + a[j] * b[i])
  • 边界:dfs(i,-1) = 0,dfs(-1,j>=0) = -INF

  • 终点:dfs(n-1,3);

  • 同时引入记忆化搜索,因为只要参数一致,每次的结果都一样,所以遍历过的就不用再遍历

    • 初始化成INF即可
  •   class Solution {public:long long maxScore(vector<int>& a, vector<int>& b) {int n = b.size();//用vector<long long>也可以//需要一个一个填充vector<array<long long,4>> memo(n);for(auto &row : memo)ranges::fill(row,LLONG_MIN);auto dfs = [&](auto &&dfs,int i,int j) -> long long {//j == -1if(j < 0)return 0;if(i < 0)  //非法return LLONG_MIN / 2;//引用取出memo[i][j],如果没更新过,就求res的同时更新auto &res = memo[i][j];if(res == LLONG_MIN)res = max(dfs(dfs,i-1,j) , dfs(dfs,i-1,j-1) + (long long)a[j] * b[i]);return res;};return dfs(dfs,n-1,3);}};
    

1:1递推

  • f[i+1][j+1] 的定义和dfs(i,j)的定义一样

    • dfs(-1,j>=0) = -INF也翻译,为f[0][j] = -INF;
  •   class Solution {public:long long maxScore(vector<int>& a, vector<int>& b) {int n = b.size();vector<array<long long,5>> f(n+1);//初始化for(int j=1;j<5;j++)f[0][j] = LLONG_MIN / 2;for(int i = 0;i<n;i++)for(int j=0;j<4;j++)f[i+1][j+1] = max(f[i][j+1],f[i][j] + (long long)a[j] * b[i]);return f[n][4];}};
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • sklearn特征选取之RFE
  • 【Linux篇】TCP/IP协议(笔记)
  • 软考中级系统集成项目管理证书好考吗
  • Java多线程(1)—线程基础
  • 【Unity3d Shader】毛玻璃效果
  • el-select组件:选择某个选项触发查询
  • 华--清--速--递
  • Python知识点:如何使用Python进行算法交易
  • 用Python实现运筹学——Day 0: 学习计划
  • Python 从入门到实战25(模块)
  • JSP(Java Server Pages)基础使用
  • D盘格式化了,数据怎么恢复?
  • 【JavaWeb】二、HTML 入门
  • 跨境专线的网速收到什么影响
  • python画图1
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 30天自制操作系统-2
  • CODING 缺陷管理功能正式开始公测
  • es的写入过程
  • GraphQL学习过程应该是这样的
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java反射-动态类加载和重新加载
  • Java-详解HashMap
  • Koa2 之文件上传下载
  • mysql中InnoDB引擎中页的概念
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 浮现式设计
  • 聊聊flink的BlobWriter
  • 深度学习在携程攻略社区的应用
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 提醒我喝水chrome插件开发指南
  • linux 淘宝开源监控工具tsar
  • ​2020 年大前端技术趋势解读
  • ​flutter 代码混淆
  • ​io --- 处理流的核心工具​
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​插件化DPI在商用WIFI中的价值
  • # 达梦数据库知识点
  • ## 基础知识
  • #Lua:Lua调用C++生成的DLL库
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $forceUpdate()函数
  • (¥1011)-(一千零一拾一元整)输出
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (c语言+数据结构链表)项目:贪吃蛇
  • (done) 声音信号处理基础知识(2) (重点知识:pitch)(Sound Waveforms)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十八)SpringBoot之发送QQ邮件
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)进入MySQL 【事务】