Beispiel #1
0
        public void RunTest()
        {
            var matrix = new[,]
            {
                { 183, 7, 863, 53, 439 },
                { 563, 497, 973, 383, 79 },
                { 343, 287, 583, 63, 169 },
                { 773, 627, 943, 343, 959 },
                { 103, 767, 303, 473, 699 }
            };
            var minMatrix = new int[5, 5];
            for (var i = 0; i < 5; i++)
            {
                for (var j = 1; j < 5; j++)
                {
                    minMatrix[i, j] = 1000 - matrix[i, j];
                }
            }

            var alg = new HungarianAlgorithm(minMatrix);
            var result = alg.Run();
            var y = 0;
            var sum2 = 0;
            foreach (var number in result)
            {
                Console.WriteLine(number);
                sum2 += matrix[y, number];
                y++;
            }
            Console.WriteLine(sum2);
        }
Beispiel #2
0
        public long Solve()
        {
            // vytvoreni
            var matrix = new int[Limit, Limit];
            var computeMatrix = new int[Limit, Limit];

            var text = File.ReadAllLines(@"..\..\Problems\Problem345.txt");
            var lineNumber = 0;
            var columnNumber = 0;
            foreach (var line in text)
            {
                foreach (var number in line.Split(' '))
                {
                    if (!string.IsNullOrWhiteSpace(number))
                    {
                        matrix[lineNumber, columnNumber] = int.Parse(number);
                        computeMatrix[lineNumber, columnNumber] = 1000 - int.Parse(number);

                        columnNumber++;
                    }
                }
                lineNumber++;
                columnNumber = 0;
            }

            var alg = new HungarianAlgorithm(computeMatrix);
            var result = alg.Run();
            var sum = 0;
            var y = 0;
            foreach (var number in result)
            {
                sum += matrix[y, number];
                y++;
            }
            return sum;
        }