解決dp(動態規劃)問題是需要思維訓練的,下面列舉了四個經典的dp問題和解析,希望對大家有幫助。
【題目比較長,在此略去了,可以從網上搜到具體描述。】
(一)最長單調遞增子串行問題(遞減同理)
(1)用乙個陣列b[n]記錄以a[i]結尾的最長單調遞增子串行的長度
(2)b[i] = max + 1, b[0] = 1
(3)序列a的最長單調子串行的長度為max
(二)最大子串行和問題
(1)用乙個陣列b[n]記錄以a[i]結尾的最大子串行和
(2)b[i] = max
(3)序列a的最大子串行和為max
(三)最大子矩陣和問題(上題的二維擴充套件)
(1)限定列的範圍(i~j)
(2)對列範圍內的每一行求和,從而化為一維序列
(3)化歸為問題(二)
(四)揹包問題
(1)用乙個二維陣列m,m[i][j]代表在承重j,裝入物品為從i到n時可以達到的最大價值
(2)m[i][j] = max(m[i+1][j], m[i+1][j-wi]+vi)
(3)m[1][j]即為最大價值
(五)滑雪問題
(1)用乙個結構體陣列locheight記錄每個點的座標和高度
用乙個二維陣列len記錄以每個點作為路徑起點的最長路徑長度
(2)將結構體陣列按照高度從低到高排序
注:排序的好處是,處理某個點的時候已經處理完比該點低的所有點的資訊,只需一次掃瞄
(3)對於某點a,四周比a點低的所有點中,選len值最大的點b,將a對應的len值設為b.len+1
(4)掃瞄len陣列,找出最大值
DP 經典問題解析
解決dp 動態規劃 問題是需要思維訓練的,下面列舉了四個經典的dp問題和解析,希望對大家有幫助。題目比較長,在此略去了,可以從網上搜到具體描述。一 最長單調遞增子串行問題 遞減同理 1 用乙個陣列b n 記錄以a i 結尾的最長單調遞增子串行的長度 2 b i max 1,b 0 1 3 序列a的最...
經典問題解析
1 經典問題解析。1 const 什麼時候是常量,什麼時候是變數。2 const 常量的判斷準則。1 只有字面量初始化的 const 常量才會進入符號表,真正意義上的常量。2 使用其他變數初始化的 const 常量依舊是唯讀變數。3 被 volatile 修飾的 const 常量不會被放入到符號表 ...
經典問題解析三
分析 這是乙個多型與陣列物件,及指標運算子之間的問題。1 父類中佔8個位元組,乙個int型別,乙個virtual函式,所以父類輸出8個位元組。2 子類繼承了父類,同時又多個乙個int型別,所以子類佔12個位元組。3 p為父類指標,c為子類指標,p 的步長為8,c 的步長為12。4 所以,當p 後,p...