leetcode312. 戳氣球(動態規劃)

有 n 個氣球,編號為0 到 n-1,每個氣球上都標有一個數字,這些數字存在數組 nums 中。

現在要求你戳破所有的氣球。如果你戳破氣球 i ,就可以獲得 nums[left] * nums[i] * nums[right] 個硬幣。 這里的 left 和 right 代表和 i 相鄰的兩個氣球的序號。注意當你戳破了氣球 i 后,氣球 left 和氣球 right 就變成了相鄰的氣球。

求所能獲得硬幣的最大數量。

說明:

你可以假設 nums[-1] = nums[n] = 1,但注意它們不是真實存在的所以并不能被戳破。
0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100
示例:

輸入: [3,1,5,8]
輸出: 167
解釋: nums = [3,1,5,8] --> [3,5,8] --> [3,8] --> [8] --> []
coins = 315 + 358 + 138 + 181 = 167

解題思路

數組含義:dp[i][j]在【i,j】區間內獲得硬幣的最大值
狀態轉移: dp[i][j]= Math.max(dp[i][j],dp[i][k-1]+dp[k+1][j]+helper[k]helper[i-1]helper[j+1]);
在【i,j】區間內,選擇不同的位置k作為最后一個戳破的氣球,那么k兩邊的氣球區間都要被全部戳破
選擇最優的位置k取得當前區間的最優解。
初始化:考慮到邊界問題,將nums首尾多加兩個的1
*

代碼

class Solution {public int maxCoins(int[] nums) {int n=nums.length;if(n==0) return 0;int[][] dp=new int[n+2][n+2];int[] helper=new int[n+2];helper[0]=helper[n+1]=1;for(int i=0,j=1;j<=n;i++,j++)helper[j]=nums[i];for(int len=1;len<=n;len++)for(int i=1;i+len-1<=n;i++){int j=i+len-1;for(int k=i;k<=j;k++)dp[i][j]= Math.max(dp[i][j],dp[i][k-1]+dp[k+1][j]+helper[k]*helper[i-1]*helper[j+1]);}return dp[1][n];}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394303.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

碳鋼腐蝕速率計算公式_鎂合金輪轂螺栓連接的電偶腐蝕行為

環境污染和能源短缺促使日益發達的汽車工業大力推進構件輕量化&#xff0c;鎂合金是最輕的結構材料之一&#xff0c;構件采用鎂合金制造可以在減重的同時不降低結構強度&#xff0c;受到汽車工業的青睞。輪轂作為汽車的主要組成部件&#xff0c;其輕量化是汽車節能減排的有效途…

第七周總結

2019第七周作業 本周作業頭 這個作業屬于那個課程C語言程序設計II這個作業要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2939我在這個課程的目標是理解指針數組和地址之前的關系及應用這個作業在那個具體方面幫助我實現目標practice參…

python大綱圖_Python課程大綱

課程大綱被分成6個部分&#xff0c;每個部分又被分解為多個階段&#xff0c; 而每個階段包含了多個Try, Workshop, FactToFace, Apply. 這里只列出部分&#xff0c;和階段&#xff1a;CHAPTER 0 : 預科[可選]Linux使用&#xff0c;常用CMD&#xff0c;服務配置&#xff0c;IDE&…

如何使用Google Authenticator在ASP.NET Core中設置兩因素身份驗證

介紹 (Introduction) In this article, we are going to learn how to perform two-factor authentication in an ASP.NET Core application using the Google Authenticator app.在本文中&#xff0c;我們將學習如何使用Google Authenticator應用程序在ASP.NET Core應用程序中…

280. Wiggle Sort

最后更新 二刷 這個題做得真蠢。上來想的復雜了&#xff0c;想的是quick sort之類的&#xff0c;然后一個一個交換。 實際上直接交換就行。。沒啥特別的。 回頭看一刷也是同樣的思考過程 宿命論啊。。 Time: O(n) Space: O(1) public class Solution {public void wiggleSort(i…

避免人為災難:盤點數據中心里十大愚蠢行為

對于企業運營&#xff0c;數據中心從設計、部署等各個環節都有極其嚴格的規范&#xff0c;保證簡單的“題目”不出錯也需要企業IT管理人員的智慧&#xff0c;在數據中心任何一個小錯誤往往會帶來巨大災難。數據中心從設計、部署、測試、運行、運維等各個環節都不能有任何的疏忽…

python中node.tag的用法_python在ui自動化中的一些常見用法

http://cn.python-requests.org/zh_CN/latest 可以查看requests庫的說明&#xff0c;pprint(res.json(),width30)可以對請求的返回值按照json格式化形式進行打印。常見的content-type 有application/x-www-form-urlencoded、application/json、application/xml。自動化測試操作…

leetcode1039. 多邊形三角剖分的最低得分(動態規劃)

給定 N&#xff0c;想象一個凸 N 邊多邊形&#xff0c;其頂點按順時針順序依次標記為 A[0], A[i], …, A[N-1]。 假設您將多邊形剖分為 N-2 個三角形。對于每個三角形&#xff0c;該三角形的值是頂點標記的乘積&#xff0c;三角剖分的分數是進行三角剖分后所有 N-2 個三角形的…

TRIZ解決問題方法

個人覺的成功是有規律的&#xff0c;那些成功的人士&#xff0c;都有一套處理事情的秘籍。只要我們的思維方式把那些秘籍融會貫通&#xff0c;并快速執行&#xff0c;我們有一天也會成功的。 TRIZ解決問題的5點方法。 1.確定最終目標。 2.列出阻礙因素 3.消除阻礙因素 4.可以利…

windows調用python_windows 快捷調用Python語言

本文主要向大家介紹了windows 快捷調用Python語言&#xff0c;通過具體的內容向大家展示&#xff0c;希望對大家學習Python語言有所幫助。場景1&#xff1a;某云平臺的賬號/或密碼比較長&#xff0c;一旦瀏覽器緩存失效&#xff0c;就要去郵件/文件查找&#xff0c;費時費力場景…

《量化投資:以MATLAB為工具》連載(1)基礎篇-N分鐘學會MATLAB(上)

http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html 《量化投資&#xff1a;以MATLAB為工具》連載(1)基礎篇-N分鐘學會MATLAB&#xff08;上&#xff09; 《量化投資&#xff1a;以MATLAB為工具》簡介 《量化投資&#xff1a;以MATLAB為工具》是由電子工業出版社&#xff0…

android-開源項目_我如何擺脫對開源的恐懼,并開始了自己的項目-以及如何做到。...

android-開源項目by Linea Brink Andersen通過Linea Brink Andersen 我如何擺脫對開源的恐懼&#xff0c;并開始了自己的項目-以及如何做到。 (How I crushed my fear of open source and started my own project — and how you can, too.) A week ago, I started an Open So…

本題要求實現函數輸出n行數字金字塔。_練習5-3 數字金字塔 (15分)

本題要求實現函數輸出n行數字金字塔。函數接口定義&#xff1a;void pyramid( int n );其中n是用戶傳入的參數&#xff0c;為[1, 9]的正整數。要求函數按照如樣例所示的格式打印出n行數字金字塔。注意每個數字后面跟一個空格。裁判測試程序樣例&#xff1a;#include <stdio.…

leetcode167. 兩數之和 II - 輸入有序數組(二分查找)

給定一個已按照升序排列 的有序數組&#xff0c;找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2&#xff0c;其中 index1 必須小于 index2。 說明: 返回的下標值&#xff08;index1 和 index2&#xff09;不是從零開始的。 你可以假設每…

thinkcmf 橫向排列數據_利用python進行數據分析之數據清洗規整

1.處理缺失值數據使用dropna()時&#xff0c;注意里面參數axis、how、thresh的用法使用fillna()時&#xff0c;注意里面參數value、method、inplace、limit的用法2.數據轉換去重data.drop_duplicates(keeplast)#注意keep的用法映射map&#xff08;&#xff09;針對的是一維數組…

v$asm_diskgroup中state的說明

1.使用oracle賬號連接數據庫&#xff0c;查看v$asm_diskgroup 2.使用grid賬號連接ASM實例&#xff0c;查看v$asm_diskgroup 3.官方v$asm_diskgroup關于state的解釋 https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-ASM_DISKGROUP.html#GUID-5CF77719-7…

AutoMapper的介紹與使用(二)

AutoMapper的匹配 1&#xff0c;智能匹配 AutoMapper能夠自動識別和匹配大部分對象屬性: 如果源類和目標類的屬性名稱相同&#xff0c;直接匹配&#xff0c;不區分大小寫目標類型的CustomerName可以匹配源類型的Customer.Name目標類型的Total可以匹配源類型的GetTotal()方法…

站長快訊 WordPress跨站攻擊漏洞修補

WordPress中發現一些漏洞&#xff0c;攻擊者利用該漏洞可以發起跨站腳本攻擊&#xff0c;繞過WordPress安全性限制&#xff0c;獲取較為敏感的修訂歷史記錄的信息&#xff0c;或者綁架站點以用于DDoS攻擊。 CVE ID CVE-2015-8834 CVE-2016-5832 CVE-2016-5834 CVE-2016-5835 C…

暢通無阻的公式:乘員組從幾乎破產變成了吸引500萬游客的方式

How could you go from almost no traction and running out of money, to getting millions of visitors to your website?您怎么能從幾乎沒有牽引力和資金用盡的角度&#xff0c;如何吸引數百萬的網站訪問者&#xff1f; You could do like Crew accidentally did with Uns…

leetcode1302. 層數最深葉子節點的和(深度優先搜索)

給你一棵二叉樹&#xff0c;請你返回層數最深的葉子節點的和。 代碼 class Solution {int[] depthnew int[]{Integer.MIN_VALUE,0};//記錄最深層數和對應的和public int deepestLeavesSum(TreeNode root) {if(rootnull) return 0;deep(root,0);return depth[1];}public void d…