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); } }
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()); }