python画气球_戳气球(python)

article/2025/9/10 15:47:22

问题描述*

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

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

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

说明

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

例子

a11f3a077a5c

image.png

思路:

1 ,如果从开头进行寻找,因为选择很多,不唯一,所以无法使用递归进行由简单到复杂。

2 ,考虑从结束开始寻找,当存在最后一个数,当然只有一种情况,以此作为子问题,然后向两边进行递归。

class Solution:

def maxCoins(self, nums: List[int]) -> int:

if not nums: #如果数组为空

return 0

def getMaxCoin(num,i,j,use):

if i==j-1:

return 0

if use[i][j]>0: #如果大于0,说明该位置已经计算过,直接使用

return use[i][j]

tmp=0

for k in range(i+1,j):

left=getMaxCoin(num,i,k,use)#左边的值

right=getMaxCoin(num,k,j,use)#右边的值

tmp=max(tmp,left+right+num[i]*num[j]*num[k])

use[i][j]=tmp

return tmp

num=[1,*nums,1] #加上边界

use=[[0]*len(num) for _ in range(len(num))] #记录数组num[i:j]中最后一个戳破气球的硬币数 use[i][j]

#print(use)

return getMaxCoin(num,0,len(num)-1,use)


http://chatgpt.dhexx.cn/article/RdrY8mDL.shtml

相关文章

312. 戳气球(区间dp)

链接:https://leetcode-cn.com/problems/burst-balloons/ 首先这个长度为500的范围可以猜测出是O(n^3)区间dp这里主要讲述为什么状态定义要定义成开区间而不是闭区间 最大的原因:闭区间计算出来的状态是无法保证正确性的 假如使用一开始的闭区间定义去…

Python 算法戳气球

戳气球 题目描述: 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里…

1012-戳气球

题目如下 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代…

戳气球和布尔运算问题(巨难)

一.大气球的最大得分 1.对应letecode链接 打气球的最大分数_牛客题霸_牛客网 (nowcoder.com) 2.题目描述: 3.解题思路 本题个人觉得本题巨难:主要步骤如下: 1.预处理:为便于处理,可在 nums 数组两端各添加一个哨兵 1&…

经典动态规划:戳气球问题

点击上方蓝字设为星标 东哥带你手把手撕力扣~ 作者:labuladong 公众号:labuladong若已授权白名单也必须保留以上来源信息 今天我们要聊的这道题「Burst Balloon」和之前我们写过的那篇 经典动态规划:高楼扔鸡蛋问题 分析过的高楼扔鸡蛋问题类…

*312戳气球

​​​​​​戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 …

力扣---戳气球

力扣—戳气球 文章目录 力扣---戳气球一、题目描述二、回溯思路三、动态规划思路四、代码 一、题目描述 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 …

【LeetCode】312. 戳气球

312. 戳气球(困难) 解法一:动态规划 首先看一个区间: 区间(i,j) 是一个开区间,因为我们只能戳爆 i 和 j 之间的气球,不能戳爆索引为 i 和 j 的气球。 我们不妨考虑该区间内被戳爆的最后一个气球&#xff…

LeetCode312:戳气球

要求 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和…

【动态规划】LeetCode 312. 戳气球 --区间DP问题

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

Golang每日一练(leetDay0105) 最小高度树、戳气球

目录 310. 最小高度树 Minimum Height Trees 🌟🌟 312. 戳气球 Burst Balloons 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

Leetcode.312 戳气球

题目链接 Leetcode.312 戳气球 题目描述 有 n个气球,编号为0到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 n u m s [ i − 1 ] ∗ n u m s [ i ] ∗ …

LeetCode 312. 戳气球(Java)

题目 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和…

每日一道算法题(3)--戳气球问题

题目 戳气球问题 :输入一个包含非负数整数的数组nums代表一排气球, nums[i]代表第i个气球的分数。现在, 你要戳破所有的气球,请计算出最高的分数。 分数的计算规则比较特别,当戳破第i个气球时, 可以获得nums[left] * nums[right] * nums[i]的分数,其中nu…

【leetcode】312.戳气球 (超详细解析,动态规划)

312. 戳气球 难度困难 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 lef…

戳气球问题

戳气球问题本质上可以认为是一种组合逆推的问题(背包问题模型) 我们可以有两种方法 1.dfs爆搜法 2.dp法 1.dfs爆搜法 dfs爆搜就是暴力枚举出哪个先破,哪个后破,直到找出最佳的方案 本质上是一个全排列问题,但是全…

Linux修改主机名—主机名和IP映射

一、修改主机名 /etc/sysconfig/network 二、主机名和IP映射 /etc/hosts Windows 里面的路径:C:\Windows\System32\drivers\etc

Linux系统下如何修改主机名

Linux系统安装好后,都会有默认的主机名,这里以CentOS系统为例,默认的主机名为localhost.localdomain,为了便于使用,我们常常需要修改主机名,下面演示的是永久更改主机名的方法。 方法/步骤 以根用户登录&a…

杂记 | Linux修改主机名(不用重启)

新买的云服务器主机名比较奇怪。强迫症难受,于是想通过Linux命令修改主机名,且选择最轻松的方案(不想重启系统),使用以下命令即可: hostnamectl set-hostname 主机名 systemctl restart systemd-hostnamed…

修改Linux的主机名

修改主机名 新申请下来的设备,修改root后面的主机名为一连串的字符和数字用于centos7.X,其他版本未验证 修改主机名 hostnamectl set-hostname Test_Server1修改后可查看是否修改成功 cat /etc/hostname也可以通过修改hostname文件修改主机名未生效可…