Ejemplo n.º 1
0
        public override (ResultDto, long) Compute(DefinitionDto definition)
        {
            var searchSpace = new RemainderDto[definition.Capacity + 1, definition.Items.Count + 1];
            var counter     = 0L;

            return(ComputeResultRecursively(definition, new List <bool>(), 0, 0, searchSpace, ref counter), counter);
        }
Ejemplo n.º 2
0
        private static void CacheRemainder(List <bool> result, long weight, long price, RemainderDto[,] searchSpace, ResultDto resultWith)
        {
            var newRemainder = new RemainderDto(resultWith.Items.Skip(result.Count).ToList(), resultWith.Price - price);

            searchSpace[weight, result.Count] = (searchSpace[weight, result.Count]?.Price ?? -1) < newRemainder.Price
                ? newRemainder
                : searchSpace[weight, result.Count];
        }