Cod sursa(job #2626658)

Utilizator Alex_AndrewAnonim Alex_Andrew Data 7 iunie 2020 14:24:47
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");

int knapSack(vector<vector<int>> objects, int maxWeight){
    vector< vector<int> > dpVal(objects.size()+1, vector<int>(maxWeight+1));
    for(int i=1; i<objects.size(); ++i){
        for(int curWeight = 1; curWeight<=maxWeight; ++curWeight){
            dpVal[i][curWeight] =  dpVal[i-1][curWeight];
            if(objects[i][0] <= curWeight)
            dpVal[i][curWeight] = max(dpVal[i][curWeight], dpVal[i-1][curWeight-objects[i][0]]+objects[i][1]);
        }


    }

    return dpVal[objects.size()-1][maxWeight];
}
int main()
{

int noObjects, maxWeight;
f>>noObjects>>maxWeight;
vector< vector<int> > obj(noObjects+1,vector<int>(2));

for(int i=1; i<=noObjects; ++i){
    int val, weight;
    f>>weight>>val;
    obj[i][0] = weight;
    obj[i][1] = val;
}
g<<knapSack(obj, maxWeight);

}