Dynamic Programming/0/1 Knapsack
optimizationsubset-selectionclassic
Press play to start
1int knapsack(int capacity, int weights[], int values[], int n) {
2 int dp[n+1][capacity+1];
3 for (int i = 0; i <= n; i++) {
4 for (int w = 0; w <= capacity; w++) {
5 if (i == 0 || w == 0) { dp[i][w] = 0; continue; }
6 if (weights[i-1] <= w)
7 dp[i][w] = max(dp[i-1][w], dp[i-1][w-weights[i-1]] + values[i-1]);
8 else
9 dp[i][w] = dp[i-1][w];
10 }
11 }
12 return dp[n][capacity];
13}
Step 1/0

Practice

LeetCode·#416 Partition Equal Subset SumMediumHackerRank·Unbounded KnapsackMediumNeetCode·Partition Equal Subset SumMedium
BestO(n·W)
AverageO(n·W)
WorstO(n·W)
SpaceO(n·W)