限定條件不止一種的揹包問題

2021-06-29 03:03:28 字數 566 閱讀 2102

對於正常的揹包問題,只有乙個限定條件——揹包容量不超過多少,而有些揹包問題有多重限定條件,比如nasa的食物計畫這道題,有體積和質量這兩個限定條件。

對於這種問題,其實是和正常的揹包問題是差不多的,只需要多加一層迴圈而已。

下面附上這道題的**:

#include #include #define maxl 401

using namespace std;

int dp[maxl][maxl], w, v, n, w, v, p;

void zeroonepack(int v, int w, int p);

int main()

cout << dp[v][w] << endl;

return 0;

}void zeroonepack(int v, int w, int p)

可以看出,只是多了一層迴圈而已,陣列多開一維。對於有n種限定條件的問題,只需開個n維陣列,n層迴圈就行了。

但是維數越多,複雜度越高,這種方法的複雜度指數公升高,這是不能接受的,不過一般不會出這麼多限定條件的題的。。。

凸包問題一種解法

凸包問題 凸包問題,即在一頂點的集合中找到一些點,使這些點構成的凸多邊形能將所有其它頂點包含在內 解決思想 顯然這些點中最左下 左上 右下 右上方的點一定包含在解集合裡 一些頂點構成的凸多邊形包含其它所有頂點等價於其它頂點都在它的邊所在直線的一邊,在構造解時由於已知一些頂點 如g 可遍歷其它頂點a構...

動態規劃 揹包問題的另一種通俗理解(C )

動態規劃的入門可以先看這篇文章 動態規劃入門 揹包問題是動態規劃中最經典的乙個問題,要是比較難的乙個問題。有乙個揹包,它的容量為c capacity 現在有n種不同的物品,編號為0 n 1,其中每一件物品的重量為w i 價值為v i 問可以向這個揹包中盛放哪些物品,使得在不超過揹包容量的基礎上,物品...

混合揹包問題(三種揹包問題的總結)

有 n 種物品和乙個容量是 v 的揹包。物品一共有三類 每種體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品種數和揹包容積。接下來有 n 行,每行三個整數 vi,wi,si用空...