LeetCode 312. 戳气球(DP,难)

1. 题目

有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。

现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left]∗nums[i]∗nums[right]nums[left] * nums[i] * nums[right]nums[left]nums[i]nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。

求所能获得硬币的最大数量。

说明:

你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实存在的所以并不能被戳破。
0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100

示例:输入: [3,1,5,8]
输出: 167 
解释: nums = [3,1,5,8] --> [3,5,8] -->   [3,8]   -->  [8]  --> []coins =  3*1*5      +  3*5*8    +  1*3*8      + 1*8*1   = 167

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/burst-balloons
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. DP解题

看的别人的解题思路

  • dp[i][j]dp[i][j]dp[i][j] 表示戳破 i 到 j 的气球获得的最大金币
  • 每次戳破气球的顺序会影响后面的结果,直接求解的复杂度是O(n!)O(n!)O(n!)
  • 逆向思考,假设最后戳破 k 号气球,那么 k 号气球左边和右边的求解是互不干扰的
  • dp[i][j]=max(dp[i][j],dp[i][k−1]+nums[i−1]∗nums[k]∗nums[j+1]+dp[k+1][j])dp[i][j] = max(dp[i][j],\quad dp[i][k-1]+nums[i-1]*nums[k]*nums[j+1]+dp[k+1][j])dp[i][j]=max(dp[i][j],dp[i][k1]+nums[i1]nums[k]nums[j+1]+dp[k+1][j])
  • [i,j][i,j][i,j] 有多少种组合呢,用他们的长度 lenlenlen 表示, 1<=len<=n1<=len<=n1<=len<=n
  • 在长度len下,i,j 窗口遍历数组,在 i,j 窗口内用递推公式求 dp[i][j]dp[i][j]dp[i][j]
class Solution {
public:int maxCoins(vector<int>& nums) {int n = nums.size();nums.insert(nums.begin(),1);//首尾加入虚拟的气球nums.push_back(1);vector<vector<int>> dp(n+2,vector<int>(n+2,0));int len, i, j, k;for(len = 1; len <= n; ++len) {for(i = 1; i <= n-len+1; ++i){j = len+i-1;for(k = i; k <= j; ++k){dp[i][j] = 
max(dp[i][j],dp[i][k-1]+dp[k+1][j]+nums[i-1]*nums[k]*nums[j+1]);}}}return dp[1][n];}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团即时物流的分布式系统架构设计

本文根据美团资深技术专家宋斌在ArchSummit架构师峰会上的演讲整理而成。 背景 美团外卖已经发展了五年&#xff0c;即时物流探索也经历了3年多的时间&#xff0c;业务从零孵化到初具规模&#xff0c;在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点&…

论文浅尝 | AAAI2020 - 基于规则的知识图谱组合表征学习

论文笔记整理&#xff1a;康矫健&#xff0c;浙江大学计算机科学与技术系&#xff0c;硕士研究生。论文链接&#xff1a;https://arxiv.org/pdf/1911.08935.pdf发表会议&#xff1a;AAAI 2020Motivation现有的KG Embedding方法大部分仅关注每个三元组的结构化信息有部分的工作把…

26岁!年入100万,两周把 Github 项目推向全球榜首,他是怎么做的?

今天要为大家介绍一位很厉害的朋友 —— 小浩。九零后&#xff0c;20 年年收入近百万。 大家不需要质疑他的收入&#xff0c;在他没做公众号的时候&#xff0c;我知道收入已有五六十。而公众号&#xff0c;只是疫情期间他因无聊而产出的结果&#xff0c;那结果怎么样呢&#xf…

美团餐饮娱乐知识图谱——美团大脑揭秘

前言 “ I’m sorry. I can’t do that, Dave.” 这是经典科幻电影《2001: A Space Odyssey》里HAL 9000机器人说的一句话&#xff0c;浓缩了人类对终极人工智能的憧憬。让机器学会说这样简单一句话&#xff0c;需要机器具备情感认知、自我认识以及对世界的认识&#xff0c;来辅…

Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义

原文地址&#xff1a;http://android.xsoftlab.net/training/graphics/opengl/shapes.html 使用OpenGL绘制图形的第一步就是要定义一个图形。如果不清楚OpenGL如何绘制自定义图形的相关基础知识时&#xff0c;那么使用OpenGL一定要仔细。 这节课将会简单讲述OpenGl ES的坐标系…

LeetCode 765. 情侣牵手(贪心)

1. 题目 N 对情侣坐在连续排列的 2N 个座位上&#xff0c;想要牵到对方的手。 计算最少交换座位的次数&#xff0c;以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人&#xff0c;让他们站起来交换座位。 人和座位用 0 到 2N-1 的整数表示&#xff0c;情侣们按顺序编号…

Python 捕获异常

Python捕获异常 一.常见异常 1.语法错误:SyntaxError:invalid syntax (1)案例: (1)解决方法: ①查看代码有没有红色波浪线 ②熟悉python基本语法 2.变量名不存在:NameError:name b is not defined (1)案例: (2)解决方法: ①检查对应的变量名是否有定义并赋值,是否写错了变量名…

论文浅尝 | WWW2020 - 知识图谱中的实体摘要:算法、评价和应用 (PPT)

本文转载自公众号&#xff1a;专知。知识图谱封装了实体和关系。知识图谱的简洁表示格式和图的特性使得许多新的Web应用程序得以创建&#xff0c;并增强了现有的应用性能。然而&#xff0c;在一个知识图谱中&#xff0c;描述一个实体的几十个或几百个事实可能会超出一个典型用户…

一条互联网广告多少钱?

文 | 申探社本文已获作者授权&#xff0c;禁止二次转载一. 导读互联网广告中的出价模式发展经历了许多变迁。从一开始的CPM&#xff0c;到CPC出价模式&#xff0c;随着Facebook的oCPX (如oCPM/oCPC) 成为了网红&#xff0c;之后的双出价&#xff0c;激活且付费&#xff0c;Face…

LeetCode 100. 相同的树(二叉树遍历)

1. 题目 给定两个二叉树&#xff0c;编写一个函数来检验它们是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 2. 解题 2.1 递归 class Solution { public:bool isSameTree(TreeNode* p, TreeNode* q) {if(!p &&am…

Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

原文地址&#xff1a;http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统&#xff0c;请移步&#xff1a;Android官方开发文档Training系列课程中文版&#xff1a;OpenGL绘图之图形定义。 在定义了图形之后&#xff0c;你…

Python之极验滑动验证码的识别(教程+案例)+识别豆瓣登录滑动验证码(附源码)

Python之极验滑动验证码的识别&#xff08;教程案例&#xff09; def get_tracks(distance, rate0.6, t0.2, v0):"""将distance分割成小段的距离:param distance: 总距离:param rate: 加速减速的临界比例:param a1: 加速度:param a2: 减速度:param t: 单位时间…

论文浅尝 | ICLR 2020 - 一文全览知识图谱研究

本文转载自公众号&#xff1a;AI科技评论 作者 | Michael Galkin编译 | 贾伟ICLR 2020 正在进行&#xff0c;但总结笔记却相继出炉。我们曾对 ICLR 2020 上的趋势进行介绍&#xff0c;本文考虑的主题为知识图谱。作者做波恩大学2018级博士生 Michael Galkin&#xff0c;研究方…

Android官方开发文档Training系列课程中文版:OpenGL绘图之应用投影与相机视图

原文地址&#xff1a;http://android.xsoftlab.net/training/graphics/opengl/projection.html##transform 在OpenGL ES环境中&#xff0c;投影相机View可以将所绘制的图形模拟成现实中所看到的物理性状。这种物理模拟是通过改变对象的数字坐标实现的&#xff1a; 投影 - 这基…

算法工程师怎样提升业务理解能力?

文 | 桔了个仔知乎本文已获作者授权&#xff0c;禁止二次转载我刚转做金融风控时&#xff0c;觉得自己写代码多年了&#xff0c;对金融风控的业务不上心&#xff0c;公司让我做什么我就用自认为及其优雅的编码方式解决&#xff0c;但对为什么要做这个事&#xff0c;做了对业务上…

强化学习在美团“猜你喜欢”的实践

1 概述 “猜你喜欢”是美团流量最大的推荐展位&#xff0c;位于首页最下方&#xff0c;产品形态为信息流&#xff0c;承担了帮助用户完成意图转化、发现兴趣、并向美团点评各个业务方导流的责任。经过多年迭代&#xff0c;目前“猜你喜欢”基线策略的排序模型是业界领先的流式更…

论文浅尝 | CoRR - 面向复杂知识问答的框架语义解析方法

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;CoRR abs/2003.13956 (2020)链接&#xff1a;https://arxiv.org/pdf/2003.13956.pdfKBQA任务中的语义解析目标是将自然语言问题转化为标准查询&#xff0c;而后用于构建知识库查询。现有的方法主要依…

全栈深度学习第1期:如何启动一个机器学习项目?

一 起 追 剧 鸭 &#xff01;简介Berkeley全栈深度学习追剧计划是由夕小瑶的卖萌屋发起的优质公开课打卡项目&#xff0c;通过微信群为同期追剧的小伙伴提供交流平台。关于该计划的详请见这里。1. Berkeley深度学习追剧群目前已有1000小伙伴加入&#xff0c;公众号后台回复口令…

超详细中文注释的GPT2新闻标题生成项目

超详细中文注释的GPT2新闻标题生成项目&#xff1a;https://zhuanlan.zhihu.com/p/338171330 笔者开源了一个带有超详细中文注释的GPT2新闻标题生成项目。该项目参考了GPT2-Chinese、GPT2-chitchat、CDial-GPT、GPT2等多个GPT2开源项目&#xff08;感谢大佬们的开源&#xff09…

构建时预渲染:网页首帧优化实践

前言 自JavaScript诞生以来&#xff0c;前端技术发展非常迅速。移动端白屏优化是前端界面体验的一个重要优化方向&#xff0c;Web 前端诞生了 SSR 、CSR、预渲染等技术。在美团支付的前端技术体系里&#xff0c;通过预渲染提升网页首帧优化&#xff0c;从而优化了白屏问题&…