揹包問題與簡例

2021-09-05 13:01:22 字數 994 閱讀 7819

揹包問題是動態規劃中的經典問題,這裡以洛谷上的一道題開心的金明為例,展示幾種解法。

1.深度優先搜尋(複雜度很高)

#include #include #include using namespace std;

struct mono;

vectorm;

int allvmax=0;

int v,n;

void dfs (int t,int sum,int sumv)

for (int i=0;i> v >>n;

mono s;

for (int i=1;i<=n;i++)

dfs(0,0,v);

cout << allvmax;

return 0;

}

2.記憶化搜尋

#include #include #include using namespace std;

int va[26]=;int im[26]=;

int dfs[26][60000];

int main()

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

else

dfs[i][t]=dfs[i+1][t];}}

cout << dfs[1][v];

return 0;

}

3.記憶化搜尋的一維陣列優化

#include #include #include using namespace std;

int va[26]=;int im[26]=;

int dfs[26][60000];

int main()

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

else

dfs[i][t]=dfs[i+1][t];}}

cout << dfs[1][v];

return 0;

}

例9 11 01揹包問題

時間限制 1000 ms 記憶體限制 65536 kb 乙個旅行者有乙個最多能裝m公斤的揹包,現在有n件物品,它們的重量分別是w1,w2,wn,它們的價值分別為c1,c2,cn,求旅行者能獲得最大總價值。第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2.n 1行 每行二個整...

揹包問題 01揹包與完全揹包

一 介紹 揹包問題是最廣為人知的動態規劃問題,都是給定限定的揹包容量與物品,求所能裝下的最大價值 完全揹包 有n種物品,每種均有無限多,第i種物品額體積為v i 重量 價值 為w i 01揹包 有n種物品,每種只有乙個,第i種物品額體積為v i 重量 價值 為w i 在揹包問題中,我們把不同種的物品...

1268 例9 12 完全揹包問題

題目描述 設有n種物品,每種物品有乙個重量及乙個價值。但每種物品的數量是無限的,同時有乙個揹包,最大載重量為m,今從n種物品中選取若干件 同一種物品可以多次選取 使其重量的和小於等於m,而價值的和為最大。輸入 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2 n 1行 每行...