<?php
function doLoad(array $weights, $remainingWeight, array $sequence = [])
{
if ($remainingWeight === 0) {
return [$sequence];
}
if (empty($weights)) {
return [];
}
$container = array_shift($weights);
$sequences = doLoad($weights, $remainingWeight, $sequence);
if ($container <= $remainingWeight) {
$sequence[] = $container;
$sequences = array_merge($sequences, $this->doLoad($weights, ($remainingWeight - $container), $sequence));
}
return $sequences;
}
$weights = [
1,
3,
5,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
67,
71,
73,
79,
83,
89,
97,
101,
103,
107,
109,
113
];
var_dump(doLoad($weights, 381));
preferences:
55.13 ms | 402 KiB | 5 Q