42 lines
672 B
Text
42 lines
672 B
Text
|
|
int max(int a, int b) {
|
||
|
|
if (a > b) {
|
||
|
|
return a;
|
||
|
|
}
|
||
|
|
return b;
|
||
|
|
}
|
||
|
|
|
||
|
|
int knapsack(int[] v, int[] w, int n, int maxw)
|
||
|
|
{
|
||
|
|
if (maxw < 0) {
|
||
|
|
return -99999999;
|
||
|
|
}
|
||
|
|
else if (maxw == 0) {
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
else if (n < 0) {
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
var include = v[n] + knapsack(v, w, n - 1, maxw - w[n]);
|
||
|
|
|
||
|
|
var exclude = knapsack(v, w, n - 1, maxw);
|
||
|
|
|
||
|
|
return max(include, exclude);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
int program(int argc, string[] argv)
|
||
|
|
{
|
||
|
|
var v = new int[]{12, 1, 33, 4, 1, 2, 1, 59, 4};
|
||
|
|
var w = new int[]{2, 10, 34, 9, 20, 26, 14, 5, 4};
|
||
|
|
|
||
|
|
var maxw = 30;
|
||
|
|
|
||
|
|
var n = 4;
|
||
|
|
|
||
|
|
var res = knapsack(v, w, 8, maxw);
|
||
|
|
|
||
|
|
return res;
|
||
|
|
}
|
||
|
|
|