Go to the source code of this file.
◆ DiscreteKnapsack()
Bitmapset * DiscreteKnapsack |
( |
int |
max_weight, |
|
|
int |
num_items, |
|
|
int * |
item_weights, |
|
|
double * |
item_values |
|
) |
| |
Definition at line 52 of file knapsack.c.
54{
56 "Knapsack",
64
66 Assert(num_items > 0 && item_weights);
67
70
71 for (
i = 0;
i <= max_weight; ++
i)
72 {
75 }
76
77 for (
i = 0;
i < num_items; ++
i)
78 {
79 int iw = item_weights[
i];
80 double iv = item_values ? item_values[
i] : 1;
81
82 for (
j = max_weight;
j >= iw; --
j)
83 {
85
87 {
88
91
93
95 }
96 }
97 }
98
100
102
104
105 return result;
106}
Bitmapset * bms_replace_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_make_singleton(int x)
Bitmapset * bms_del_member(Bitmapset *a, int x)
Bitmapset * bms_add_member(Bitmapset *a, int x)
Bitmapset * bms_copy(const Bitmapset *a)
static Datum values[MAXATTR]
Assert(PointerIsAligned(start, uint64))
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_SMALL_SIZES
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
References ALLOCSET_SMALL_SIZES, AllocSetContextCreate, Assert(), bms_add_member(), bms_copy(), bms_del_member(), bms_make_singleton(), bms_replace_members(), CurrentMemoryContext, i, j, MemoryContextDelete(), MemoryContextSwitchTo(), palloc(), and values.
Referenced by consider_groupingsets_paths().