Pagini recente » Cod sursa (job #2418222) | Cod sursa (job #1368816) | Cod sursa (job #974011) | Cod sursa (job #2422238) | Cod sursa (job #2616970)
#include <bits/stdc++.h>
using namespace std;
// A utility function that returns
// maximum of two integers
int max(int a, int b) { return (a > b) ? a : b; }
// Returns the maximum value that
// can be put in a knapsack of capacity W
int knapSack(int W, int wt[], int val[], int n)
{
// Base Case
if (n == 0 || W == 0)
return 0;
// If weight of the nth item is more
// than Knapsack capacity W, then
// this item cannot be included
// in the optimal solution
if (wt[n - 1] > W)
return knapSack(W, wt, val, n - 1);
// Return the maximum of two cases:
// (1) nth item included
// (2) not included
else
return max(val[n - 1] + knapSack(W - wt[n - 1],wt, val, n - 1),knapSack(W, wt, val, n - 1));
}
// Driver code
int n, W, val[1002], wt[1002];
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d %d",&n,&W);
for(int i = 0;i < n; i++) {
scanf("%d %d",&wt[i],&val[i]);
}
cout << knapSack(W, wt, val, n);
return 0;
}