public void Case1() { var data = new[] { new Tuple<int, int>(8, 4), new Tuple<int, int>(15, 8), new Tuple<int, int>(4, 3), new Tuple<int, int>(10, 5), }; var alg = new KnapsackAlg(); Assert.AreEqual(19, alg.CalcOptimalValue(data, 11)); }
public void Case2() { var data = new[] { new Tuple<int, int>(3, 4), new Tuple<int, int>(2, 3), new Tuple<int, int>(4, 2), new Tuple<int, int>(4, 3), }; var alg = new KnapsackAlg(); Assert.AreEqual(8, alg.CalcOptimalValue(data, 6)); }
private static void CalcKnapsack(string filePath) { var lines = File.ReadAllLines(filePath); var firstLine = lines[0].Split(' '); int capacity = int.Parse(firstLine.First()); int inputCount = int.Parse(firstLine.Skip(1).First()); var input = new List<Tuple<int, int>>(inputCount); input.AddRange(lines.Skip(1).Select( line => line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)) .Select(node => new Tuple<int, int>( int.Parse(node.First()), int.Parse(node.Skip(1).First())))); var knapsackAlg = new KnapsackAlg(); Console.WriteLine("knapsack: {0}", knapsackAlg.CalcOptimalValue(input.ToArray(), capacity)); }