01揹包問題和完全揹包問題

2021-10-25 21:30:30 字數 887 閱讀 9004

輸入:

4 51 2

2 43 4

4 5

輸出:

8

很明顯這是乙個01揹包問題的模板題,只需套用01揹包的模板即可求解。但什麼是01揹包呢?顧名思義,0和1,像概率論中的01分布,即在裡面,或者不在裡面,只有兩種可能,更準確地說,每一件物品只有乙個,它有自己的體積和價值,你可以定奪是否將它加入你的揹包當中。

#include using namespace std;

const int maxn = 1005;

int n,v;

int a[maxn] = ,b[maxn] = ,f[maxn] = ;

int main()

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

} cout<=a[i];j--)

}

?外層迴圈列舉每一件物品,內層迴圈列舉揹包的每一塊空間,狀態轉移方程為f[j] = max(f[j],f[j-a[i]]+b[i])。即,如果揹包尚有空間,將價值做累加,並且空間要相應的減少。

對於簡單的多重揹包問題,只需拆解為01揹包問題即可。

#include using namespace std;

const int maxn = 1005;

int a[maxn] = ,b[maxn] = ,f[maxn] = ,n,v;

int main()

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

} cout

}

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

}

01揹包問題和完全揹包問題

在hihocoder上面的題目中看到的這個問題,總結一下。先看01揹包問題。01揹包問題 乙個揹包總容量為v,現在有n個物品,第i個 物品體積為weight i 價值為value i 現在往揹包裡面裝東西,怎麼裝能使揹包的內物品價值最大?看到這個問題,可能會想到貪心演算法,但是貪心其實是不對的。例如...

01揹包問題和完全揹包問題

時間限制 20000ms 單點時限 1000ms 記憶體限制 256mb 描述且說上一周的故事裡,小hi和小ho費勁心思終於拿到了茫茫多的獎券!而現在,終於到了小ho領取獎勵的時刻了!小ho現在手上有m張獎券,而獎品區有n件獎品,分別標號為1到n,其中第i件獎品需要need i 張獎券進行兌換,同時...

01揹包問題和完全揹包問題

在hihocoder上面的題目中看到的這個問題,總結一下。先看01揹包問題。01揹包問題 乙個揹包總容量為v,現在有n個物品,第i個 物品體積為weight i 價值為value i 現在往揹包裡面裝東西,怎麼裝能使揹包的內物品價值最大?看到這個問題,可能會想到貪心演算法,但是貪心其實是不對的。例如...