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

article/2025/9/10 16:38:37

题目

    戳气球问题 :输入一个包含非负数整数的数组nums代表一排气球, nums[i]代表第i个气球的分数。现在, 你要戳破所有的气球,请计算出最高的分数。

    分数的计算规则比较特别,当戳破第i个气球时, 可以获得nums[left] * nums[right] * nums[i]的分数,其中nums[left]和nums[right]代表气球i的左右相邻气球的分数。

    nums[left]不一定就是nums[i - 1],nums[right]不一定就是nums[i + 1]。比如戳破了nums[3], 现在nums[4]的左侧就和nums[2]相邻了。

思路分析 

    我们首先考虑的是‘动态规划’,此问题最小的子问题为戳破最后一个气球,但这个最后一个戳破的气球可以是范围内的其中一个,所以我们借助循环,通过左右区域的最高分数就可以求出以当前气球为最后一个戳破最高分数。

    我们可以建立一个二维数组来记录当前区间的最高分数。

0
0
0
0
0

在求当前最高分时,我们要先求出左右区域的最高分数,所以大概的遍历顺序为下图

从下往上从左往右遍历。由于被戳破的最后一个气球的位置不固定,所以我们要求出的左右区域的最高分数也不止两个。通过循环我们就可以求出所有不同位置的左右区域的最高分数。不同最后一个被戳破的气球的位置对应的左右区域的最高分数的分布为下图。

代码展示
 

static public int maxCoins(int[] nums) {int n = nums.length;//为了方便,我们就让下标从一开始,所以边界为0到n + 1;int[] points = new int[n + 2];//都初始化为0for(int i = 1; i <=  n; i++) {points[i] = nums[i - 1];}points[0] = points[n + 1] = 1;//初始化为一从而保证了在后续的循环中防止边界的分数影响最终结果int[][] dp = new int[n + 2][n + 2];for(int i = n; i >= 0; i--)for(int j = i + 1; j < n + 2; j++) {for(int k = i + 1; k < j; k++) {//(i,j) i到j为开区间dp[i][j] = Math.max(dp[i][j], dp[i][k] + dp[k][j] + points[i] * points[j] * points[k]);/*因为i~k和k~j之间的气球已经全破了,所以k的左右为i,j */}}return dp[0][n + 1];}


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

相关文章

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

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

戳气球问题

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

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

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

Linux系统下如何修改主机名

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

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

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

修改Linux的主机名

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

Linux 永久修改主机名(转载)

Linux修改主机名&#xff0c;永久生效。 linux查看主机名: 查看主机命令&#xff1a; [rootlinux_epm2 ~]# hostname localhost.localdomain localhost.localdomain即为默认的主机名。 修改network文件: 用root用户登录&#xff0c;如果不是root用户&#xff0c;使用su命令切换…

Linux修改主机名(hostname)

查看当前的主机名 #第一种hostname #第二种hostnamectl修改主机名 执行修改命令&#xff1a; hostnamectl set-hostname <new-hostname>编辑hosts文件 vim /etc/hosts

Linux修改主机名(静态主机名、临时主机名)

背景 通常情况下Linux在安装时会设置主机名、root密码等相关参数&#xff0c;但安装后的使用过程中或许你需要修改主机名&#xff0c;本文讲述如何修改主机名&#xff0c;包括临时修改和永久修改。 查看主机名 原生态的Linux一般自带两个命令&#xff1a;hostname、hostname…

linux修改主机名命令

一、 使用hostname命令 比如我现在的主机名是haozhikuan-hbza&#xff0c;如果我想把主机名变成hbza-hbza可以用 hostname hbza-hbza 然后 hostname 或者uname -u都可以查看自己的主机名&#xff0c;如果再新打开一个终端就能看到自己的主机名已经修改过变成hbza-hbza了。 不…

Linux修改主机名永久生效

Linux&#xff08;centos7非此方法&#xff09; 修改主机名&#xff0c;永久生效。 linux查看主机名: 查看主机命令&#xff1a; [rootlinux_epm2 ~]# hostname localhost.localdomain localhost.localdomain即为默认的主机名。 修改network文件: 用root用户登录&#xf…

Linux修改主机名和域名

在/etc里有一个hostname这个是主机名存放文件&#xff0c;修改主机名就在这里面修改&#xff0c;用命令&#xff1a; vim /etc/hostname 进入后直接按下键盘上的D键&#xff0c;一下不行就两下&#xff0c;D键就将原有的主机名给删了&#xff08;D键可以一次性将光标所处的那一…

Linux修改主机名--立即生效的方法

Linux修改主机名–立即生效的方法 在使用Linux操作系统过程中&#xff0c;如果我们想更改主机名时&#xff0c;可以用以下命令进行操作 查看主机名 [rootecs-5332 ~]# hostname ecs-5332修改主机名&#xff0c;【myhost】可以替换为自己想要的主机名 [rootecs-5332 ~]# hos…

Linux永久修改主机名和IP

Linux永久修改主机名和IP 文章目录 Linux永久修改主机名和IP一、修改主机名1.查看当前主机名2.修改主机名的配置文件3.要想通过主机名访问&#xff0c;还需要修改一个配置文件4.然后执行reboot重启电脑5.再次执行hostname是否是你修改后的主机名 二、设置静态ip1.查看本机的配置…

Linux修改主机名的两种方法

Linux修改主机名的两种方法文章目录 先展示一下效果一、通过hostname命令直接更改主机名&#xff08;不是永久&#xff09;1、显示当前的主机名2、更改主机名 二、通过修改配置文件&#xff08;永久改&#xff09;1、hostname 和 hosts文件的作用2、修改配置文件中的主机名称 自…

修改Linux系统的主机名

1、查看当前的主机名 hostname 例&#xff1a; 2、修改主机名 (1)打开hostname文件 vim /etc/hostname (2) 按I键进入编辑模式&#xff0c;修改文件里的名字 例&#xff1a; (3)按Esc键&#xff0c;然后输入:&#xff0c;最后输入wq并按回车键退出 3、重新启动服务器 4…

Linux命令之修改主机名hostnamectl

概述 hostnamectl 可用于显示主机名和一些系统相关的信息&#xff0c;主要用于永久修改主机名并且不需要重启系统。 注&#xff1a;hostnamectl 是 CentOS 7 及以上版本才增加的命令。 语法 该命令的语法如下&#xff1a; hostnamectl [选项] [参数]该命令支持的选项有&…

linux修改主机名的三种方法

1.通过比较老的方法vim /etc/hostname 进行编辑修改——重启后生效 2.hostnamectl set-hostname 主机名 ——重启后生效 3.通过内核去修改主机名(红帽8版本) echo 主机名 > /proc/sys/kernel/hostname(无法直接编辑文件&#xff0c;利用重定向可以)——立即生效

Linux系统修改主机名称方法

在Linux系统中&#xff0c;修改主机名称的方法主要有以下两种&#xff1a; 1. 使用hostnamectl命令修改主机名称 hostnamectl命令是一个系统管理工具&#xff0c;它可以用于管理主机名、静态主机名、虚拟主机名等。使用该命令可以修改主机名&#xff0c;并且该修改是永久性的。…

Linux服务器主机名的3种修改方法

查看主机名 hostname方法一&#xff1a;修改配置文件 主机名保存在/etc/hostname文件里&#xff0c;把旧的主机名删除&#xff0c;替换为新的主机名&#xff0c;保存文件就行了。要注意大小写。 如需修改&#xff0c;使用vi 命令即可。 方法2&#xff1a;hostnamectl命令 ho…