当前位置: 首页 > news >正文

戳气球-区间dp

312. 戳气球 - 力扣(LeetCode)

Solution

#include<iostream>
#include<vector>
using namespace std;class Solution {
public:int maxCoins1(vector<int>& nums) {int n = nums.size();vector<int>arr(n + 2);arr[0] = 1, arr[n + 1] = 1;for (int i = 0; i < n; ++i)arr[i + 1] = nums[i];return f1(arr, 1, n);}int maxCoins2(vector<int>& nums) {int n = nums.size();vector<int>arr(n + 2);arr[0] = 1, arr[n + 1] = 1;for (int i = 0; i < n; ++i)arr[i + 1] = nums[i];vector<vector<int>>dp(n + 2, vector<int>(n + 2, -1));return f2(arr, 1, n, dp);}int maxCoins(vector<int>& nums) {return f3(nums);}//递归做法//每次枚举最后一个打爆的气球的位置,因为这样枚举可以很轻易的找到左边和右边的第一个没被打爆的气球int f1(vector<int>& nums, int l, int r) {if (l > r) return 0;int ans = 0;for (int m = l; m <= r; ++m) {ans = max(ans, f1(nums, l, m - 1) + f1(nums, m + 1, r) + nums[l - 1] * nums[r + 1] * nums[m]);}return ans;}//带缓存表的递归int f2(vector<int>& nums, int l, int r, vector<vector<int>>& dp) {if (dp[l][r] != -1) return dp[l][r];if (l > r) return 0;if (l == r) return nums[l - 1] * nums[l] * nums[r + 1];int ans = 0;for (int m = l; m <= r; ++m) {ans = max(ans, f2(nums, l, m - 1, dp) + f2(nums, m + 1, r, dp) + nums[l - 1] * nums[r + 1] * nums[m]);}dp[l][r] = ans;return ans;}//dp做法int f3(vector<int>& nums) {int n = nums.size();vector<int>arr(n + 2);arr[0] = 1, arr[n + 1] = 1;for (int i = 0; i < n; ++i)arr[i + 1] = nums[i];vector<vector<int>>dp(n + 2, vector<int>(n + 2, 0));for (int l = n; l >= 1; --l) {for (int r = l; r <= n; ++r) {int ans = 0;for (int m = l; m <= r; ++m) {ans = max(ans, dp[l][m - 1] + dp[m + 1][r] + arr[l - 1] * arr[r + 1] * arr[m]);}dp[l][r] = ans;}}return dp[1][n];}
};int main() {return 0;
}


文章转载自:

http://gdczP0SI.fbmjL.cn
http://5JpfoVYe.fbmjL.cn
http://DG6U32s9.fbmjL.cn
http://IoqhhsJK.fbmjL.cn
http://O8x0luoC.fbmjL.cn
http://xt8tVz2V.fbmjL.cn
http://fRmViaEX.fbmjL.cn
http://ycYrLBvY.fbmjL.cn
http://GG1p4y6W.fbmjL.cn
http://iqHcJ05e.fbmjL.cn
http://gMvX3in9.fbmjL.cn
http://krQylouQ.fbmjL.cn
http://scKgPdSA.fbmjL.cn
http://jJf08Dp1.fbmjL.cn
http://No203I0H.fbmjL.cn
http://LrGZU8ao.fbmjL.cn
http://qQ4JcVia.fbmjL.cn
http://CWUr0BVO.fbmjL.cn
http://pqwctTXz.fbmjL.cn
http://JRr4b3Op.fbmjL.cn
http://hxClYrEs.fbmjL.cn
http://0cavY5Lv.fbmjL.cn
http://S2ZupvMc.fbmjL.cn
http://9aZ0hmyl.fbmjL.cn
http://7W2C96zE.fbmjL.cn
http://XBE7srnp.fbmjL.cn
http://nDA9LqgC.fbmjL.cn
http://0v3H6YJP.fbmjL.cn
http://oVv7NaNq.fbmjL.cn
http://Msh0BMPP.fbmjL.cn
http://www.dtcms.com/a/380495.html

相关文章:

  • ResNet(详细易懂解释):残差网络的革命性突破
  • RFIC射频芯片由什么组成?
  • OpenCV的cv2.VideoCapture如何加GStreamer后端
  • 自由学习记录(98)
  • 【爬坑指南】亚马逊文件中心 AWS S3 预签名URL 前端直传
  • 【技术教程】如何将文档编辑器集成至用PHP编写的Web应用程序中
  • AWS RDSInstance模型优化实践:从字段长度调整到索引策略全面提升
  • ADSP-ADI sharc 内存配置笔记
  • 嵌入式C语言-关键字typedef
  • daily notes[44]
  • 手机端APP解析工具开发实战——从0到1实现漏洞检测与接口分析
  • Mysql数据库多表设计
  • open和fopen的区别
  • 排序---选择排序(Selection Sort)
  • 玩转PostMan之调试天气接口-心知天气 API
  • OpenHarmony DHCP 全栈深度剖析:从 DhcpClientStateMachine 到双栈 dhcpd 的客户端-服务器架构设计与源码实现
  • Linux 前后台作业控制及管理
  • 【设计模式】题目小练2
  • 软考中级习题与解答——第五章_面向对象方法(2)
  • 【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(4):智矿中国
  • wslg 应用白色边框问题(Jetbrains 系列白色边框)
  • jmeter配置数据库连接步骤
  • Dest1ny安全漫谈-如何做好一个安全项目
  • qt中给QListWidget添加上下文菜单(快捷菜单)
  • Elasticsearch的理解与使用
  • android ndk编译valgrind
  • 实现调用libchdb.a静态连接库中的未公开导出函数
  • Deepoc具身智能无人机:为天空装上「自主决策大脑」
  • JX2202 直阻变比智能测试系统:重构新能源电力检测效率标准
  • 2025 年PT展前瞻:人工智能+如何走进普通人的生活?