Jump to content

Knapsack problem/Bounded: Difference between revisions

Line 559:
knapSack(40);
var sw = System.Diagnostics.Stopwatch.StartNew();
Console.Write(knapSack(400) + "\n" + sw.Elapsed); // 7051 µs
Console.Read();
}
Line 565:
static string knapSack(uint w1)
{
uint n = (uint)w.Length; var K = new uint[n + 1, w1 + 1];
init(); change();
for (uint ivi, wi, w0, = 0x, ni = (uint)w.Length0; vari K< = new uint[n; i+ 1, w1 + 1];)
for (vi = v[i], wi = 0w[i], w0 = 1; iw0 <= nw1; iw0++)
for (w0 = 1; w0 <= w1; w0++){
x = K[i + 1, w0] = w[i] <= w0 ?;
if (wi <= w0) x = max(v[i]vi + K[i, w0 - w[i]wi], K[i, w0]x) : K[i, w0];
K[i + 1, w0] = x;
 
uint v1 = K[n, w1]; string str = "";}
forstring (;str v1= > 0""; n--)
for (uint v1 = K[n, w1]; v1 > 0; n--)
if (v1 != K[n - 1, w1])
{
{ v1 -= v[n - 1]; w1 -= w[n - 1]; str += items[n - 1] + "\n"; }
}
return str;
}
Line 622 ⟶ 625:
}
}</lang>
 
=={{header|Clojure}}==
We convert the problem to a Knapsack-0/1 problem by replacing (n-max item) vith n-max identical occurences of 1 item.
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.