Pagini recente » Cod sursa (job #1002699) | Cod sursa (job #1402922) | Cod sursa (job #674093) | Cod sursa (job #1376177) | Cod sursa (job #2206404)
#include <cstdio>
#include <iostream>
#define NMAX 5000
#define GMAX 10000
using namespace std;
typedef struct {
int weight, value;
} THING;
bool used[NMAX];
int n, W, cache[NMAX][GMAX];
THING things[NMAX];
int bruteForce(int remainingItems, int remainingWeight) {
if (remainingWeight < 0) return -500000000;
if (0 == remainingItems) return 0;
int ans = 0;
for (int it = 0; it < n; ++it) {
if (!used[it]) {
used[it] = true;
ans = max(ans, things[it].value + bruteForce(remainingItems - 1, remainingWeight - things[it].weight));
used[it] = false;
ans = max(ans, bruteForce(remainingItems - 1, remainingWeight));
}
}
return ans;
}
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
cin >> n >> W;
for (int it = 0; it < n; ++it) {
cin >> things[it].weight >> things[it].value;
}
cout << bruteForce(n, W);
return 0;
}