輸入:
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 現在往揹包裡面裝東西,怎麼裝能使揹包的內物品價值最大?看到這個問題,可能會想到貪心演算法,但是貪心其實是不對的。例如...