初學演算法 動態規劃之滾動陣列

2022-09-18 12:48:08 字數 675 閱讀 6809

魅力手鐲

描述:貝西去了購物中心的珠寶店,發現了乙個迷人的手鐲。當然,她想用n(1)中可能的最佳魅力來填充它≤ n≤ 3402)可用的護身符。所提供列表中的每個咒語都有乙個權重wi(1≤ wi≤ 400),乙個「可取性」因子di(1≤ di≤ 100),最多可使用一次。貝西只能支援重量不超過m(1)的魅力手鐲≤ m≤ 12,880).

將該權重限制作為約束條件,並給出乙個魅力列表及其權重和期望值,推導出最大可能的評分總和。

輸入:第1行:兩個空格分隔的整數:n和m

第2行。。n+1:第i+1行用兩個空格分隔的整數wi和di描述魅力i

輸出:第1行:乙個整數,它是給定權重約束可以實現的魅力期望值的最大總和

樣例輸入:

4 61 4

2 63 12

2 7複製

樣例輸出:

像本題,如果dp[3402][12880]那麼肯定會超記憶體,將他根據一定規律,把用過後以後根本再也用不上的記憶體拿出來,放新結果,這樣可以將dp陣列化為乙個一維陣列;

在數字三角形中也用過

#include

using namespace std;

int dp[12885]=,n,m,d[3450]=,w[3450]=;

int main()

for (int i=n;i>=1;i--)}}

cout}

動態規劃空間優化之滾動陣列

使用範圍 使用在遞推或動態規劃中 作用 節約空間 注意 時間上沒什麼優勢 舉例1 作用在一維陣列 普通方法 int d new int 100 d 0 1 d 1 1 for int i 2 i 100 i system.out.printf d d 99 上述方法使用100個空間 近似認為 注意,...

尋寶 動態規劃 滾動陣列)

小明有一張藏寶圖,上面有m n個房間,每個房間裡面都有乙個有一定價值的寶物,小明只能從左上角的房間進入收集寶物,且每次只能向右邊或向下邊的房間繼續尋寶,最終只能從最右下的房間出來。請你幫小明計算下他最多可以收集到多少價值的寶物?輸入第一行給出兩個正整數m,n 1 輸出收集到的最大價值v,題目保證v ...

《滾動陣列》 動態規劃思想

滾動陣列是dp中的一種程式設計思想。簡單的理解就是讓陣列滾動起來,每次都使用固定的幾個儲存空間,來達到壓縮,節省儲存空間的作用。起到優化空間,主要應用在遞推或動態規劃中 如01揹包問題 因為dp題目是乙個自底向上的擴充套件過程,我們常常需要用到的是連續的解,前面的解往往可以捨去。所以用滾動陣列優化是...