Problem Plecakowy

0

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;
}
0

zrób sobie mapę, z <int, std::vectorstd::int>>, do której będziesz zapisywał konkretne wyniki składowe

1 użytkowników online, w tym zalogowanych: 0, gości: 1