博主在某dn上搜尋了很多的文章,才理解並且根據思路寫出的**。
這個問題也是揹包問題,動態的規劃問題------稱作揹包問題。
博主也是乙個小白,第二次接觸揹包的問題,本篇文章錯誤之處還請指出
有n件物品和乙個容量是v的揹包。每件物品只能使用一次。第i件物品的體積是vi,價值是wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。
解法:
當我們想要獲得第i件物品裝進揹包的最大價值時。我們只需要確定揹包裡的i-1個物品達到了最大價值。依次遞迴向前推導。
而問題是,我們如何判斷那個是最優選擇。
重點:
當我們要獲得最優解時,那麼每次獲得選擇時,都應在本條件下選擇最優的那個。所以每次在選擇時,我們就要進行對比!
#includeusing namespace std;
long long m,n;
int ans;
//這裡設定的是條件就相當於(x,y)座標根據題目條件做出的約束,移動的直線距離不能超過3
//因為每次的搜尋都得是和前乙個比,並且題目要求座標要比前乙個大,所以y的座標這樣設定
int x[9] = ;
int y[9] = ;
int dpf[110][110];
int main()
}//這裡就類似於乙個最優選擇的節點,在本次的最優選擇下,再次進行遞迴比較選擇最優解
if(ans!=int_min) dpf[i][j] += ans;
}} //輸出答案
cout << dpf[m][n] <
return 0;
}
藍橋杯 正則問題
題目描述 考慮一種簡單的正規表示式 只由 x 組成的正規表示式。小明想求出這個正規表示式能接受的最長字串的長度。例如 xx x x xx xx 能接受的最長字串是 長度是6 輸入 xx x x xx xx 程式應該輸出 6 思路 遇到 就遞迴呼叫函式,遇到 a 就將計數器x 遇到 就選出左右最大值,...
藍橋杯 日期問題
問題描述 小明正在整理一批歷史文獻。這些歷史文獻中出現了很多日期。小明知道這些日期都在1960年1月1日至2059年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有採用年 月 日的,有採用月 日 年的,還有採用日 月 年的。更加麻煩的是,年份也都省略了前兩位,使得文獻上的乙個日期,存在...
藍橋杯 遞迴問題
深入遞推,逐級回退 遞迴問題 深搜dfs 在有條件的情況下試探各種情況 找出口 遞迴的終止條件 遞迴函式引數邊界值的界定 思想 1.src上的n 1個盤子移到medium 2.src剩下的乙個最大的盤子移到dest 3.medium上的n 1個盤子移到dest 把src最上面的乙個盤子移到dest ...