Nie mam kod, który oblicza optymalną wartość przez algorytm plecakowy (bin pakowania NP-trudny problem):Jak znaleźć elementy w torbie, używając algorytmu plecakowego [a nie tylko jego wartości]?
int Knapsack::knapsack(std::vector<Item>& items, int W)
{
size_t n = items.size();
std::vector<std::vector<int> > dp(W + 1, std::vector<int>(n + 1, 0));
for (size_t j = 1; j <= n; j++)
{
for (int w = 1; w <= W; w++)
{
if (items[j-1].getWeight() <= w)
{
dp[w][j] = std::max(dp[w][j-1], dp[w - items[j-1].getWeight()][j-1] + items[j-1].getWeight());
}
else
{
dp[w][j] = dp[w][j - 1];
}
}
}
return dp[W][n];
}
Również muszę elementy, włączone do pakowania, które mają być pokazane. Chcę utworzyć tablicę, aby umieścić tam dodatkowe elementy. Pytanie brzmi, na jakim etapie umieścić ten dodatek, a może jest jakiś inny bardziej skuteczny sposób na zrobienie tego?
Pytanie: Chcę być w stanie poznać przedmioty, które dają mi optymalne rozwiązanie, a nie tylko wartość najlepszego rozwiązania.
PS. Przepraszam za mój angielski, to nie jest mój język ojczysty.
to trochę trudne do zrozumienia Twoje pytanie, ale myślę, że chcesz znać przedmioty, które dają optymalne rozwiązanie, a nie tylko wartość najlepszego rozwiązania? –
tak, masz absolutną rację. – prvit