Witam mam do rozwiązania zadanie oparte na algorytmie plecakowym, za pomocą programowania dynamicznego. Mam określone wagi i wartości, program liczy najwyższą wartość od danego zakresu K, jednak w zadaniu mam jeszcze wypisać jakie wagi składają się na konkretne wyniki i tutaj nie mam pojęcia jak to zrobić. Będę wdzięczny za każdą pomoc.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int k, licznik = 0, j = 0;
int waga[100000], wartosc[100000];
cout << "Podaj okreslona pojemnosc ciezarowki: " << endl;
cin >> k;
fstream plik;
plik.open("plik.txt", ios::in);
if (plik.good() == true) {
while (!plik.eof()) {
plik >> waga[licznik];
plik >> wartosc[licznik];
licznik++;
}
}
plik.close();
int najlepsze[100][100];
int tab[100];
for (int j = 0; j <= k; j++) {
najlepsze[0][j] = 0;
}
for (int i = 0; i <= licznik; i++) {
najlepsze[i][0] = 0;
}
for (int i = 1; i <= licznik; i++) {
for (int j = 1; j <= k; j++) {
if (j > waga[i] && najlepsze[i - 1][j] < najlepsze[i][j - waga[i]] + wartosc[i]) {
najlepsze[i][j] = najlepsze[i][j - waga[i]] + wartosc[i];
tab[i];
}
else {
najlepsze[i][j] = najlepsze[i - 1][j];
}
}
}
return 0;
}