Pagini recente » Cod sursa (job #759166) | Cod sursa (job #2264086) | Cod sursa (job #957959) | Cod sursa (job #1547902) | Cod sursa (job #2626658)
#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);
}