Pagini recente » Cod sursa (job #3143700) | Cod sursa (job #1696059) | Cod sursa (job #3219411) | Cod sursa (job #84200) | Cod sursa (job #2206403)
#include <cstdio>
#include <iostream>
#define NMAX 5000
using namespace std;
typedef struct {
int weight, value;
} THING;
bool used[NMAX];
int n, W;
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;
}