hdoj 1171 多重揹包問題

2021-06-28 21:48:25 字數 789 閱讀 2282

本題為多重揹包問題。

思路:既然題目中的說的是要盡可能的將a b變得相等,然後a 又一定要大於b ,那麼我就想將總物品的價值的一半設定為揹包的容量,以這個容量來進行多重揹包求解最大值,然後判斷一下這個最大值與剩下物品價值的總和的大小,如果最大值較小(也就是說如果這個最大值不到總價值的一半),那麼我們就要將另乙個當a,最大值當b。

揹包問題在多case中一定要進行初始化!!!這兩次的多重揹包都忘記了初始化,導致了wa一次才意識到沒有初始化!!!一定要進行初始化!勿忘!!

附上**:

#include#includeusing namespace std;

int c[60];

int m[60];

int dp[250010];

int max (int a,int b)

int main ()

int v = total / 2;

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

else

for(int j = v;j >= m[i]*c[i];j--)

dp[j] = max(dp[j],dp[j-m[i]*c[i]]+m[i]*c[i]);

}} if(dp[v] < total-dp[v])

cout << total-dp[v] << " " << dp[v] << endl;

else

cout << dp[v] << " " << total-dp[v] << endl;

} return 0;

}

多維多重揹包問題 多重揹包問題

悼念512汶川大 遇難同胞 珍惜現在,感恩生活 急!災區的食物依然短缺!為了挽救災區同胞的生命,心繫災區同胞的你準備自己採購一些糧食支援災區,現在假設你一共有資金n元,而市場有m種大公尺,每種大公尺都是袋裝產品,其 不等,並且只能整袋購買。請問 你用有限的資金最多能採購多少公斤糧食呢?後記 人生是乙...

hdu1171 多重揹包模板題

最近重新開始學dp,今天做到多重揹包這題,自己寫了乙個 感覺自己確實進步點了 嘻嘻。但是我沒看清題意n 0 退出迴圈,我wa 了無數次。下 面是自己寫的 include include include include include include include include include i...

揹包問題 多重揹包

有n種物品和乙個容量為w的揹包。第i種物品最多有n i 件可用,每件重量是w i 價值是v i 求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量,且價值總和最大。1.使用三重迴圈進行遞推 狀態轉移式為 dp i j max 關鍵 如下 void solve printf d n dp n ...