AcWing 12 揹包問題求具體方案

2021-10-22 12:12:57 字數 1009 閱讀 8762

acwing 12. 揹包問題求具體方案

有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。

第 i 件物品的體積是 vi,價值是 wi。

求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。

輸出 字典序最小的方案。這裡的字典序是指:所選物品的編號所構成的序列。物品的編號範圍是 1…n。

輸入格式

第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。

接下來有 n 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i 件物品的體積和價值。

輸出格式

輸出一行,包含若干個用空格隔開的整數,表示最優解中所選物品的編號序列,且該編號序列的字典序最小。

物品編號範圍是 1…n。

資料範圍

0這幾天狀態不好,今天重振旗鼓繼續刷題。

這道題是求方案數,我們平時常規的求方案數是求的字典序最大的方案,這道題直接把v,w陣列反轉就得到答案,不過需要注意幾點細節。

#include#includeusing namespace std;

const int n=1010;

int dp[n][n];

int v[n],w[n];

int main(void)

} int j=m;

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

}

這個**一直ac不了。

看了y總的**

發現最後倒數第四行

我少加了乙個條件

ac**如下:

#include#includeusing namespace std;

const int n=1010;

int dp[n][n];

int v[n],w[n];

int main(void)

} int j=m;

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

}

揹包問題求具體方案

第二天叫醒我的不是鬧鐘,是夢想!有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 ...

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

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

揹包九講 之 01揹包問題求具體方案

本文基於01揹包問題 問題重述 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 ...