有依賴的01揹包問題( 金明的預算方案)

2021-06-09 21:26:28 字數 678 閱讀 2280

考慮到每個主件最多只有兩個附件,因此我們可以通過轉化,把原問題轉化為01揹包問題來解決,在用01揹包之前我們需要對輸入資料進行處理,把每一種物品歸類,即:把每乙個主件和它的附件看作一類物品。處理好之後,我們就可以使用01揹包演算法了。在取某件物品時,我們只需要從以下四種方案中取最大的那種方案:只取主件、取主件+附件1、取主件+附件2、既主件+附件1+附件2。很容易得到如下狀態轉移方程:

f[i,j]=max

其中,f[i,j]表示用j元錢,買前i類物品,所得的最大值,a[i,0]表示第i類物品主件的**,a[i,1]表示第i類物品第1個附件的**,a[i,2]表示第i類物品第2個附件的**,b[i,0],b[i,1],b[i,2]分別表示主件、第1個附件和第2個附件的重要度。

#include using namespace std;

int zf[65][3],w[65][3],v[65][3],d[65][3205];

int main()

else if(w[q][1]==0)

else

} for(i=1;i<=m;i++)

for(j=0;j<=n;j++)

if(j>=w[i][0]+w[i][1])

if(j>=w[i][0]+w[i][2])

if(j>=w[i][0]+w[i][1]+w[i][2])

} cout<

有依賴的01揹包問題( 金明的預算方案)

考慮到每個主件最多只有兩個附件,因此我們可以通過轉化,把原問題轉化為01揹包問題來解決,在用01揹包之前我們需要對輸入資料進行處理,把每一種物品歸類,即 把每乙個主件和它的附件看作一類物品。處理好之後,我們就可以使用01揹包演算法了。在取某件物品時,我們只需要從以下四種方案中取最大的那種方案 只取主...

金明的預算方案(有依賴的揹包問題)

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過 n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件與附件的...

金明的預算方案(有依賴的揹包問題)

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件與附件的例...