揹包問題 LintCode

2021-08-03 12:24:41 字數 628 閱讀 4022

在n個物品中挑選若干物品裝入揹包,最多能裝多滿?假設揹包的大小為m,每個物品的大小為a[i]

樣例 如果有4個物品[2, 3, 5, 7]

如果揹包的大小為11,可以選擇[2, 3, 5]裝入揹包,最多可以裝滿10的空間。

如果揹包的大小為12,可以選擇[2, 3, 7]裝入揹包,最多可以裝滿12的空間。

函式需要返回最多能裝滿的空間大小。

思路:

兩次迴圈,外部遍歷陣列a,內部反向遍歷陣列dp,若j即揹包容量大於等於物品體積a[i],則取前i-1次迴圈求得的最大容量dp[j],和揹包體積為j-a[i]時的最大容量dp[j-a[i]]與第i個物品體積a[i]之和即dp[j-a[i]]+a[i]的較大值,作為本次迴圈後的最大容量dp[i]。

#ifndef c92_h

#define c92_h

#include

#include

#include

using

namespace

std;

class solution }}

return dp[m];

}int maxval(int a, int b)

};#endif

LintCode 揹包問題

揹包問題 在n個物品中挑選若干物品裝入揹包,最多能裝多滿?假設揹包的大小為m,每個物品的大小為a i 您在真實的面試中是否遇到過這個題?yes 樣例如果有4個物品 2,3,5,7 如果揹包的大小為11,可以選擇 2,3,5 裝入揹包,最多可以裝滿10的空間。如果揹包的大小為12,可以選擇 2,3,7...

揹包問題 LintCode

首次在lintcode上做了乙個打敗了100 提交的答案,一定要紀念一下 下面進入正題 揹包問題 lintcode 問題描述 在n個物品中挑選若干物品裝入揹包,最多能裝多滿?假設揹包的大小為m,每個物品的大小為a i 注意事項 不可以將物品進行切割。樣例說明 如果有4個物品 2,3,5,7 如果揹包...

Lintcode 0 1揹包問題

狀態轉移方程dp i j max dp i 1 j dp i 1 j w i 1 v i 1 i代表第幾個物品,j代表揹包容量,w i 1 v i 1 代表第i個物品的重量和價值。揹包問題i class solution param m an integer m denotes the size o...