UVA 624 01揹包求方案

2021-07-11 22:14:26 字數 622 閱讀 2116

題目:

題意:給定揹包容量,給定物品個數,然後是物品,價值和體積相等。求最大價值時的放入方案,多解輸出一解即可

思路:每次更新揹包時順便記錄被誰跟新的即可,然後逆向求方案,正向輸出

總結:揹包和dp忘得差不多了。。。憂傷。。。是時候刷一波了

#include #include #include #include using namespace std;

const int n = 10010;

int dp[30][n], jl[30][n];

int val[n], res[n];

int main()

int tmp = n, k = 0;

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

if(jl[i][tmp] != -1)

res[k++] = val[jl[i][tmp]], tmp = tmp - val[i-1];

for(int i = k - 1; i >= 0; i--)

printf("%d ", res[i]);

printf("sum:%d\n", dp[m][n]);

}return 0;

}

UVA624 01揹包 路徑列印

題目的意思就就是給你乙個值,在給你幾個數字 用這些數字湊出最接近這個值的組合 簡單 揹包 路徑列印 路徑列印時可以根據 f i 1 j 的話,這個數就沒有被選擇 從後往前找 include includeconst int n 1000 const int m 25 int track m int ...

揹包問題求方案數 揹包問題求具體方案

在01揹包的基礎上要求出最優解的方案數 具體的方案 揹包問題求方案數 題目鏈結 解題思路 我們可以設定乙個與陣列f功能類似的陣列g,其中f i 儲存的是體積等於i的最優解 這裡是等於,之前的部落格說的是小於等於,原因後面會說 而g i 儲存的是體積等於i時的最優解的方案數,而f i 為什麼儲存的是等...

CD UVA 624(01揹包 記憶路徑)

題意 乙個軌道長度為n的cd,k首歌,每首歌的長度不同,問這張cd上最多能燒錄多長的歌曲,歌曲必須被整首燒錄 最後輸出cd上所刻的歌曲及總長度 01揹包加上路徑記憶 用二維陣列記錄路徑vis i j 表示第i首在長度為j是被錄製 include include include include usi...