示例#1
0
        static void CollectItems(IList <Item> items, Knapsack knapsack)
        {
            items = items.OrderByDescending(x => x.ValuableRatio()).ToList();

            while (knapsack.GetTotalWeight() < knapsack.Capacity || items.Count > 0)
            {
                var currItem = items.First();
                if (knapsack.GetTotalWeight() + currItem.Weight > knapsack.Capacity)
                {
                    return;
                }

                knapsack.AddItem(currItem);
                items.Remove(currItem);
            }
        }
示例#2
0
        static void Main()
        {
            var knapsack = new Knapsack(16);
            var items    = new Item[] {
                new Item {
                    Price = 25, Weight = 10
                },
                new Item {
                    Price = 12, Weight = 8
                },
                new Item {
                    Price = 16, Weight = 6
                },
                new Item {
                    Price = 30, Weight = 40
                }
            };

            CollectItems(items, knapsack);
            Console.WriteLine(knapsack.ToString());
        }