LeetCode 312. Burst Balloons(戳气球)

2023-11-02

原题网址:https://leetcode.com/problems/burst-balloons/

Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by array nums. You are asked to burst all the balloons. If the you burst balloon i you will get nums[left] * nums[i] * nums[right] coins. Here left and right are adjacent indices of i. After the burst, the left and right then becomes adjacent.

Find the maximum coins you can collect by bursting the balloons wisely.

Note: 
(1) You may imagine nums[-1] = nums[n] = 1. They are not real therefore you can not burst them.
(2) 0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100

Example:

Given [3, 1, 5, 8]

Return 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

方法:动态规划,定义二维数组coins,coins[a][b]表示把第a个和第b个气球之间(不含a和b)的气球戳烂,最大能得到的分值。

public class Solution {
    public int maxCoins(int[] nums) {
        int[] dpnums = new int[nums.length+2];
        dpnums[0] = 1;
        dpnums[dpnums.length-1] = 1;
        for(int i=0, j=1; i<nums.length; i++, j++) dpnums[j] = nums[i];

        int[][] coins = new int[dpnums.length][dpnums.length];
        for(int i=2; i<dpnums.length; i++) {
            for(int j=0; j+i<dpnums.length; j++) {
                for(int k=j+1; k<j+i; k++) {
                    coins[j][j+i] = Math.max(coins[j][j+i], coins[j][k] + coins[k][j+i] +
                        dpnums[j] * dpnums[k] * dpnums[j+i]);
                }
            }
        }
        return coins[0][dpnums.length-1];
    }
}

另一种实现方式:

public class Solution {
    public int maxCoins(int[] nums) {
        int[] dpnums = new int[nums.length+2];
        dpnums[0] = 1;
        dpnums[dpnums.length-1] = 1;
        System.arraycopy(nums, 0, dpnums, 1, nums.length);
        
        int[][] coins = new int[dpnums.length][dpnums.length];
        for(int i=2; i<dpnums.length; i++) {
            for(int j=i-2; j>=0; j--) {
                for(int k=i-1; k>j; k--) {
                    coins[j][i] = Math.max(coins[j][i], coins[j][k] + dpnums[j] * dpnums[k] * dpnums[i] + coins[k][i]);
                }
            }
        }
        return coins[0][dpnums.length-1];
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 312. Burst Balloons(戳气球) 的相关文章

  • c语言——矩阵运算器

    话不多说 上代码 include
  • POJ-1458最长公共子序列

    给定序列的子序列是给定序列 其中遗漏了一些元素 可能没有 给定序列X
  • 最短Hamilton路径

    题目 题目链接 题解 状压dp f i j 表示从0点按照路径i走到j点的最短距离 其中i为二进制数 1表示走过某点 0表示未走过某点 比如10010表示经过了1 4两个点 而不经过0 2 3点 状态转移为 假设沿路径i走到j点经过k点 且
  • 强化学习基础三大优化方法:(一)动态规划

    文章目录 一 简介 二 动态规划 DP Dynamic Planning 方法 一 策略评估 二 策略迭代 1 策略改进 2 策略迭代 3 迭代算法 三 编程实践 一 环境介绍 二 策略编写 1 初始化 2 价值评估 3 策略改进 4 其他
  • leetcode动态规划总结之01背包和完全背包问题

    1 背包问题分类 其中 除了01背包和完全背包外 leetcode题目中好像还没有涉及其他类型的背包 在这里我就不做总结 2 01背包理论 有N件物品和一个最大承载重量为W 的背包 第i件物品的重量是weight i 其价值是value i
  • Thief in a Shop 【CodeForces - 632E】【背包】

    题目链接 给了N个物品 每个物品无限个 我们要的是求刚好我们拿了K个物品的时候 能组成哪几种数 我们可以想个办法去填充 那么就需要有一个所谓的0状态 然后假如不足K个的时候 就可以拿这个所谓的0状态来填充了 所以 我们把所有的数排序 然后都
  • 2023年数学建模B组:利用AHP层次分析法解决实际问题(Matlab)

    目录 利用AHP层次分析法解决实际问题 Matlab实现 介绍 案例背景 步骤1 建立层次结构模型
  • 【动态规划】从入门到实践---动态规划详解

    目录 1 动态规划概念 一 定义数组元素的含义 二 找到数组元素之间的关系表达式 三 找到初始值 2 案例详解 一 爬楼梯 1 定义数组元素的含义 2 找到数组元素之间的关系表达式 3 找到初始值 案例二 最短路径 题目 做题步骤 1 定义
  • [CUDA] 快速入门CUDA(1)-基本了解和HelloWorld

    CUDA基础 文章目录 CUDA基础 1 CUDA简介 2 GPU和CPU架构的不同之处 3 查看GPU硬件信息 4 需要建立的基本概念 5 总结 1 CUDA简介 CUDA的全程是Computer Unified Device Archi
  • 【LeetCode75】第五十九题 第N个泰波那契数

    目录 题目 示例 分析 代码 题目 示例 分析 题目顾名思义 让我们求出第N个泰波那契数 也就是除了开头三个数之外 第四个数开始就是等于前三个数之和 不要和斐波那契数弄混了 斐波那契是前两个数的和 泰波那契是前三个数的和 也就是说当前数 我
  • 【计算机视觉】直接线性变换(DLT)求解P矩阵(2 使用SVD分解)(附MATLAB代码)

    引言 之前的帖子已经完成了一种计算直接线性变换的方法 是直接通过矩阵运算来进行的 不过随后得到的结果并不能满足精度要求 如果只是用来作为迭代优化的一个初值的话 对于精度的要求倒也不用那么高 但在查阅资料时又发现了另一种解法 是通过SVD分解
  • 密码复习——AES

    AES 分组加密 明文的固定长度128位 密钥长度可以是128 192 256位 按明文与密钥长度都是128位来解释AES的加密过程 在AES中 明文是以字节的形式排列 一个字节8bit位 排列如下 AES的整体加密流程 其中最后一轮第十轮
  • GPU编程 CUDA C++ 线性代数求解器 cuSolver库

    cuSolver库较cuBLAS库更为高级 其能处理矩阵求逆 矩阵对角化 矩阵分解 特征值计算等问题 cuSolver库的实现是基于cuBLAS库和cuSPARSE库这两个基本库 cuSolver库的功能类似于Fortran中的LAPACK
  • 泊松重建算法原理介绍

    目录 1 泊松重建算法 2 泊松重建核心思想及原理 3 泊松算法流程 本文出自CSDN点云侠 原文链接 爬虫自重 把自己当个人 1 泊松重建算法 泊松重建是Kazhdan M在2006年提出的基于八叉树和泊松方程的一种网格三维重建算法 其本
  • 编程题——连续最大和

    编程题 连续最大和 题目描述 一个数组有 N 个元素 求连续子数组的最大和 例如 1 2 1 和最大的连续子数组为 2 1 其和为 3 输入描述 输入为两行 第一行一个整数n 1 lt n lt 100000 表示一共有n个元素 第二行为n
  • 背包九讲-01背包

    动态规划核心思维能力 动态规划是求最优解问题的重要解法 也是信息学奥赛中每年必考的内容之一 学习动态规划更应该注重此类问题思维能力的锻炼 多多做题 一般 gt 50题后方可入门 注意理解以下概念 1 状态 2 状态属性 3 状态的计算 也就
  • 【算法】【动规】最长递增子序列

    跳转汇总链接 动态规划算法汇总链接 2 1 最长递增子序列 题目链接 给你一个整数数组 nums 找到其中最长严格递增子序列的长度 子序列是由数组派生而来的序列 删除 或不删除 数组中的元素而 不改变其余元素的顺序 例如 3 6 2 7 是
  • 【算法刷题】每日打卡——动态规划(1)

    背包问题 例题一 有 N件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N V
  • 短视频账号矩阵系统3年独立开发正规接口源码搭建部署开发

    一 矩阵系统源码主要有三种框架 短视频账号矩阵源码的框架有很多种 以下列举其中几种 1 星图矩阵 星图矩阵是抖音官方向商家提供的短视频广告推广平台 是抖音官方的赚钱工具 商家可利用星图矩阵进行广告推广 同时短视频创作者也能通过星图平台获取收
  • 矩阵基本操作3

    题目描述 问题描述 定义一个N M N M lt 100 的矩阵 将一个该矩阵的行和列的元素互换 存到另一个二维数组中 输入格式 一行两个整数 N M 中间用空格隔开 表示矩阵有N行 M列 接下来共N行M列表示矩阵 输出格式 输出转置以后的

随机推荐

  • 盘点JAVA中比较常见的数据类型的 取值空间大小(让我们来干了这杯爪洼岛咖啡)

    JAVA作为一门面向对象的编程语言 吸收了C 等编程语言的优 点的同时 也展现了它独有的强大一面 列如可移植性可跨平台 性与及兼容性等特征 吸引了无数程序猿为其着迷 话不多说接下来今天我来带大家了解JAVA这门编程语言 中常用的数据类型的相
  • 深度学习------pytorch,CNN:实现mnist,cifar10数据集

    1 torch实现mnist数据集 1 1 cnn卷积 用全连接层写 实现mnist数据集分类 import torch from torch autograd import Variable import numpy as np from
  • How do Functional, Structural, and Behavioral Models Work Together to Describe a Whole System?

    原文链接 https brogramo com how do functional structural and behavioral models work together to describe a whole system As a
  • 机器学习、数据挖掘和统计模式识别学习(Matlab代码实现)

    目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 机器学习是让计算机在没有明确编程的情况下采取行动的科学 在过去的十年中 机器学习为我们提供了自动驾驶汽车 实用的语音识别 有效的网络搜索以及对人类基因组的理解大大提
  • postgresql-使用pg_dump导出表、pg_store导入表

    pg dump 是一个用于备份PostgreSQL数据库的实用工具 即使当前数据库正在使用 也能够生成一致性的备份 且不会阻塞其他用户访问数据库 包括读 写 pg restore 从一个归档中恢复一个由 pg dump 创建的 Postgr
  • 航空航天专业词汇(待补全)

    航空航天专业词汇 英文 中文 aborted rejected abandoned take off 中断起飞 above cloud 在云上 access flap 接口盖 acceleration 加速促进 actuating jack
  • html type=hidden 属性,input 属性及类型有哪些(type=text/button/hidden)

    input 从字面意就可以看出专门用来给用户输入文字的 当然也包括选择文件 它不具体表示某一类元素 如文本框 text 要使它具体表示一类元素必须加类型指明 如表示文本框加 type text type 也是 input 众多属性中最重要的
  • spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集

    前言 本章是spring基于XML 配置bean系类中第7篇讲解spring通过文件属性注入bean和基于xml的bean的自动装配以及spring eel表达式的使用加代码合集 个人主页 尘觉主页 个人简介 大家好 我是尘觉 希望我的文章
  • c语言 打空心菱形

    没错 如图所示 我们要整一个这样的菱形 写的挺麻烦的 代码如下 我是一半一半写的 要n 5 先写上半部分的代码 那么它是咋写出来的呢 本题可以完全用for语句写 但我选择了用for和if语句相结合的方式 i是代表的横 j代表的是列 所以它最
  • nginx相关漏洞处理:CVE-2016-2183、CVE-2022-41741、CVE-2022-41742

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 漏洞内容 二 现状 三 centos7安装openssl11 四 升级nginx到1 24 0 1 下载nginx 2 编译安装nginx 3 配置ngi
  • 2022数学建模美赛E题详细思路获取

    已更新 公众号 千千小屋grow 数据在文后链接 背景 正如我们所知 气候变化对生命构成了巨大的威胁 为了减轻气候变化的影响 我们需要采取严厉的行动 以减少大气中的温室气体的数量 仅仅是减少温室气体的排放是不够的 我们需要努力增加通过生物圈
  • log4j日志在java控制台输出,简单实用

    log4j日志在java控制台输出 简单实用 1 log4j输出有2中方式 第一种是将日志信息保存在一个文本当中 第二种是输出到控制台中 下面介绍第二种方式 2 在控制台输出log4j日志信息 是开发项目中常用的也是比不可少的也是必须会的一
  • 微信小程序中slider实现拾色器功能

    微信小程序中slider实现拾色器功能 思路 效果图 体验 代码 效果体验 思路 画板中要实现颜色选择功能 几经周折 效果还可以 整个思路就是 1 利用线性过渡实现slider背景渲染 2 获取slider滑块value值 3 计算该val
  • Markdown公式编辑学习笔记

    一 公式使用参考 1 如何插入公式 行中公式 放在文中与其它文字混编 可以用如下方法表示 数学公式 独立公式可以用如下方法表示 数学公式 自动编号的公式可以用如下方法表示 若需要手动编号 参见大括号和行标的使用 begin equation
  • 再看中国互联网web2.0百强名单

    无意中翻看到一篇我在三年多前写的文章 我看中国互联网web2 0百强名单 读来颇有感概 2005 2006那两年 正是WEB2 0概念轰轰烈烈的时候 大大小小的新网站层出不穷 博客 视频 交友 评点 社区 聚合 不管自己的网站的UGC比例多
  • bootstrap table 表格支持shirt 多选_bootstrap-table 表格行内编辑实现

    这篇文章向大家介绍一下如何使用bootstrap table插件实现表格的行内编辑功能 我的web前端学习交流群点击进入1045267283 欢迎加入 先放一张效果图 应用场景 之前的项目也是采用bootstrap table 添加和修改数
  • 牛客——子序列(组合数学)

    子序列 题目描述 给定一个小写字母字符串 T T T 求有多少长度为 m m m的小写字母字符串 S
  • 端口相关知识总结

    端口相关知识总结 80是服务器上的一个软件 服务器软件 端口是软件的代号 3306是MySQL的端口 1521是Oracle的端口 80是外部服务器的通用端口 京东也是 不写也可以访问 80端口可以省略 文件下载端口 FTP 都是21 FT
  • Android 13 - Media框架(2)- Demo App与MediaPlayer Api了解

    尝试用MediaPlayer写了一个播放demo 实现了网络流和本地流的播放 由于本人对app开发一窍不通 所以demo中很多内容是边查资料边写的 写的也比较杂乱 能够帮助理解api就行 这一节主要会记录demo开发中学到的内容 以及了解M
  • LeetCode 312. Burst Balloons(戳气球)

    原题网址 https leetcode com problems burst balloons Given n balloons indexed from 0 to n 1 Each balloon is painted with a nu