unbounded_knapsack {
59 conststd::vector<std::uint16_t>& val,
60 conststd::vector<std::uint16_t>& wt,
61std::vector<std::vector<int>>&
dp) {
81std::max(take, nottake);
94 conststd::vector<std::uint16_t>& val,
95 conststd::vector<std::uint16_t>& wt) {
98std::vector<std::vector<int>>
dp(
99N, std::vector<int>(W + 1, -1));
113std::uint16_t N1 = 4;
114std::vector<std::uint16_t> wt1 = {1, 3, 4, 5};
115std::vector<std::uint16_t> val1 = {6, 1, 7, 7};
116std::uint16_t W1 = 8;
119N1, W1, val1, wt1) == 48);
120std::cout <<
"Maximum Knapsack value " 126std::uint16_t N2 = 3;
127std::vector<std::uint16_t> wt2 = {10, 20, 30};
128std::vector<std::uint16_t> val2 = {60, 100, 120};
129std::uint16_t W2 = 5;
132N2, W2, val2, wt2) == 0);
133std::cout <<
"Maximum Knapsack value " 139std::uint16_t N3 = 3;
140std::vector<std::uint16_t> wt3 = {2, 4, 6};
141std::vector<std::uint16_t> val3 = {5, 11, 13};
142std::uint16_t W3 = 27;
145N3, W3, val3, wt3) == 27);
146std::cout <<
"Maximum Knapsack value " 152std::uint16_t N4 = 0;
153std::vector<std::uint16_t> wt4 = {};
154std::vector<std::uint16_t> val4 = {};
155std::uint16_t W4 = 10;
157N4, W4, val4, wt4) == 0);
158std::cout <<
"Maximum Knapsack value for empty arrays: " 163std::cout <<
"All test cases passed!"<< std::endl;
Dynamic Programming algorithms.
std::uint16_t unboundedKnapsack(std::uint16_t N, std::uint16_t W, const std::vector< std::uint16_t > &val, const std::vector< std::uint16_t > &wt)
Wrapper function to initiate the unbounded knapsack calculation.
static void tests()
self test implementation
std::uint16_t KnapSackFilling(std::uint16_t i, std::uint16_t W, const std::vector< std::uint16_t > &val, const std::vector< std::uint16_t > &wt, std::vector< std::vector< int > > &dp)
Recursive function to calculate the maximum value obtainable using an unbounded knapsack approach.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4