Ci Ho un codice, che calcola il valore ottimale tramite algoritmo zaino (bin packing problema NP-hard):Come trovare gli elementi nella borsa, usando l'algoritmo a zaino [e non solo il valore della borsa]?
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];
}
Inoltre ho bisogno degli elementi, incluso per imballare, per essere mostrato. Voglio creare un array, per inserire elementi aggiunti. Quindi la domanda è in quale fase aggiungere questa aggiunta, o forse c'è un altro modo più efficace per farlo?
Domanda: Voglio essere in grado di conoscere gli elementi che mi danno la soluzione ottimale e non solo il valore della soluzione migliore.
PS. Scusa per il mio inglese, non è la mia lingua madre.
E 'un po' difficile da capire la tua domanda, ma immagino tu voglia essere in grado di conoscere gli articoli che ti danno la soluzione ottimale, e non solo il valore della soluzione migliore? –
sì, hai assolutamente ragione. – prvit