CPP-SCNUOJ-Problem P27. [算法课动态规划] 戳气球,小白容易理解

Problem P27. [算法课动态规划] 戳气球
有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。

现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得
nums[i−1]×nums[i]×nums[i+1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。

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

提示:

n == nums.length
1 <= n <= 300
0 <= nums[i] <= 100
题目数据保证运算过程不超过 int 所能表示的范围
输入

输入一行数组num

输出

输出所能获得硬币的最大数量

样例

标准输入
3 1 5 8
标准输出
167
标准输入
1 5
标准输出
10

参考视频:这个视频讲的非常好,再配上我的注释,就很容易看懂了,搞了一个晚上,终于搞懂了,琢磨了好久,网上好多资料都看不懂,我太菜了呜呜呜

#include <iostream>
#include <bits/stdc++.h>using namespace std;
int dp[310][310];int main()
{int d;vector<int> nums;while(cin >> d){nums.push_back(d);}int n = nums.size();//头尾记上不能戳爆的气球为1nums.insert(nums.begin(), 1);nums.push_back(1);memset(dp, 0, sizeof dp);//从长度为1的区间开始推导到长度为n,计算区间内获得的最大金币//所有的小段,所有的开始位置(有了小段的长度,同时就可以指导截止位置了),都进行求max/*举例,n=10;取长度为1,即len=1,则可以取十组,分别是1-10,开始位置也是从1-10,即第二层循环left<=n-len+1,即left<=10-1+1=10进行10次;len=2,取12,23,34....910,第二层循环截止位置:left<=10-2+1=9;len=3,取123,234...8910,第二层循环截止位置:left<=10-3+1=8;right=left+len-1,比如234-》right=2+3-1=4;依次递推...接着,从取到的每一小段当中,逐个寻找合适的k,取max注意是:nums[left-1]*nums[k]*nums[right+1],取边left和right外的*/for(int len=1; len<=n; len++){for(int left=1; left<=n-len+1; left++){int right = left+len-1;for(int k=left; k<=right; k++){dp[left][right] = max(dp[left][right], dp[left][k-1]+dp[k+1][right]+nums[left-1]*nums[k]*nums[right+1]);}}}cout << dp[1][n];
//    cout << "Hello world!" << endl;return 0;
}

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

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

相关文章

Vue学习计划--Vue2(一)简单了解vue

Vue2的终止支持时间为2023年12月31日。 在这个矛盾的时间点&#xff0c;还是决定先把vue2的笔记放出来&#xff0c;在Vue2完结后再把Vue3的笔记补上。这样呢&#xff0c;2和3都不落下&#xff0c;也算是来一个启承的作用吧。在工作中呢&#xff0c;旧的项目可以维护&#xff0c…

VIVADO-FFT IP核学习记录

根据用户手册使用IP核 ① 找到user guide / product guide 并打开 ② 找到Customizing and Generating the Core(不同手册可能题目不一样)&#xff0c;查看IP核的创建过程中各个参数的意义和设置方法。 ③ 找到port description &#xff0c;查看接口注释 根据网络教程使用…

微信小程序调用相机拍摄或手机相册

wx.chooseMedia(Object object) 功能描述 拍摄或从手机相册中选择图片或视频。

Facebook推广工具功能科普!

随着社交媒体的普及&#xff0c;Facebook已经成为全球使用最广泛的社交平台之一&#xff0c;对于广大营销人员来说&#xff0c;利用Facebook推广工具进行营销已经成为不可或缺的一部分。 那么&#xff0c;这些推广工具到底有哪些功能呢?本文将为您揭秘Facebook推广工具的强大…

SaToken利用Redis做持久化

官网解释 官网解释 教程 引入依赖 <!-- 提供Redis连接池 --> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId> </dependency><!-- Sa-Token 整合 Redis &#xff08;使用 jdk 默认序…

py 读取抖音话术

要读取抖音话术&#xff0c;您可以使用Python中的文件操作和字符串处理功能。以下是一个简单的示例代码&#xff0c;演示如何读取抖音话术文件并将其打印到控制台上&#xff1a; # 打开抖音话术文件 with open("douyin_scripts.txt", "r", encoding"…

leecode | 从二叉搜索树到更大和树

官方的题目解释永远晦涩难懂 这就是最大的拦路虎 简单介绍&#xff0c;将二叉搜索树&#xff0c;转换成“更大和树”&#xff0c;“最大的和树”&#xff0c;就是更新节点val&#xff0c;二叉树中所有大于等于该节点的的val 总和&#xff0c;包括本身 #对着图看&#xff0c;会更…

pythonGUi不能立即刷新

今天遇到一个UI界面问题&#xff1a; 在修改控件的背景颜色或其他样式后&#xff0c;UI 没有立即更新&#xff0c;而需要晃动窗口或触发一些事件才能看到变化&#xff0c;可能是由于界面的刷新机制问题。这种情况下&#xff0c;我尝试使用 Refresh 方法来强制刷新控件。 在你的…

SpringMVC常用注解

1、Controller 声明该类为SpringMVC中的Controller 控制器Controller 负责处理由DispatcherServlet 分发的请求&#xff0c;它把用户请求的数据经过业务处理层处理之后封装成一个Model &#xff0c;然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中使用Controller &…

pip命令详解

pip命令介绍 pip是由Ian Bicking在2008年提出的&#xff0c;他将pyinstall重命名为pip。名称pip是首字母缩写词&#xff0c;全称为“Package Installer for Python”。自Python3的3.4版本以及Python2的2.7.9版本开始&#xff0c;pip被直接包括在Python的安装包内&#xff0c;成…

【原神游戏开发日志1】缘起

【原神游戏开发日志1】缘起 版权声明 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 文章内容不得删减、修改、演绎 相关学习资源见文末 大家好&#xff0c;最近看到原神在TGA上频频获奖&#xff0c;作为一个14年经验的游戏开…

C语言每日一题(45)删除排序链表中的重复元素

力扣网83 删除排序链表中的重复元素 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&…

Android 11.0 Camera 分辨率从高到低排列功能实现

1.前言 在11.0的系统ROM定制化开发中,在对Camera2的产品进行定制化的时候,在camera2的设置页面,总是会发现在预览 分辨率的列表中,有的产品不是按照分辨率的大小来进行排序显示的,所以就需要了解显示流程,然后按顺序排序来实现 功能,接下来实现相关功能 2.Camera 分…

公有云迁移研究——AWS DMS

大纲 1 什么是DMS2 DMS的作用3 DMS在迁移的时候都做些什么4 在使用DMS的时候我们需要做些什么5 操作5.1 创建两个数据库终端节点5.2 创建迁移任务 6 可能遇到的问题7 总结 在本地机房或其他云往AWS上做迁移时&#xff0c;往往会遇到数据库迁移的任务。如果数据量不是特别大&…

SQL server QUOTENAME()和CONVERT()函数一起使用来将日期值格式化

在这段代码中&#xff0c;QUOTENAME()和CONVERT()函数一起使用来将日期值格式化并引用在动态SQL语句中。 CONVERT(): 这是SQL Server中的一个内置函数&#xff0c;用于将数据从一种类型转换为另一种类型。在这个例子中&#xff0c;它接受三个参数&#xff1a; a. 目标数据类型…

Linux 软件安装

目录 一、Linux 1、Linux异常解决 1、JDK安装 1、Linux卸载JDK 2、Linux安装JDK 2、Redis安装 一、Linux 1、Linux异常解决 1、Another app is currently holding the yum lock; waiting for it to exit... 解决办法: rm -f /var/run/yum.pid1、杀死这个应用程序 ps a…

计算机网络:传输层——多路复用与解复用

文章目录 前言一、Socket&#xff08;套接字&#xff09;二、多路复用/解复用三、多路解复用&#xff08;1&#xff09;多路解复用原理&#xff08;2&#xff09;无连接&#xff08;UDP&#xff09;多路解复用&#xff08;3&#xff09;面向连接&#xff08;TCP&#xff09;的多…

mysql大数据量查询瓶颈解决方案-供参考

项目运行了三年了&#xff0c;流水表主表数据已经达到4kw以上 所以最近项目开始时不时的出现问题&#xff0c;主要体现在以下方面&#xff1a; 1.客户端经常出现查询超时。 1.1 mybatis分页查询出现问题。 对于这个情况&#xff0c;我在这篇博客中做了描述&#xff0c;可以移…

进入软件的世界

选择计算机 上高中的时候&#xff0c;因为沉迷于网络游戏&#xff0c;于是对计算机产生了浓厚的兴趣&#xff0c;但是那个时候对于计算机的了解还是非常肤浅的。上大学的时候&#xff0c;也就义无反顾的选择了计算机专业&#xff0c;其实并不是一个纯粹的计算机专业&#xff0…

每日OJ题_算法_双指针①_力扣283. 移动零

目录 力扣283. 移动零 解析代码 力扣283. 移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 难度 简单 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的…