Найти два различных числа в массиве, сумма которых наиболее близка к заданному числу - C#

Узнай цену своей работы

Формулировка задачи:

//Дан массив и число "p". Найдите два различных числа в массиве, сумма которых наиболее близка к "p". Проблема в том, что я заранее присваиваю большое значение, но мне не нравится как это реализовано
int[] array37 = new int[20];
            Random randNumb = new Random();
            int p = 14;
            int sumClose = 100;
            int min = 0;
            int index1 = 0, index2 = 0;
            int intermediateStep = 0;
            for(int i = 0; i < array37.Length; i++)
            {
                array37[i] = randNumb.Next(0, 11);
            }
            foreach(int show in array37)
            {
                Console.WriteLine(show);
            }
            Console.WriteLine();
            for(int i = 0; i < array37.Length; i++)
            {
                for(int j = 0; j < array37.Length; j++)
                {
                    if(i == j)
                    {
                        continue;
                    }
                    intermediateStep = array37[i] + array37[j];
                    min = p - intermediateStep;
                    if(Math.Abs(min) <= sumClose)
                    {
                        index1 = i;
                        index2 = j;
                        sumClose = min;
                    }
                }
            }
            Console.WriteLine(array37[index1] + "   " + array37[index2]);
            Console.WriteLine(sumClose);
            Console.ReadKey();

Решение задачи: «Найти два различных числа в массиве, сумма которых наиболее близка к заданному числу»

textual
Листинг программы
    int[] array = { 1, 2, 5, 6, 6, 8, 9 };
    int desiredSum = 12;
 
    var solution = array.Distinct()
        .SelectMany(e => array.Select(k => Tuple.Create(e, k)))
        .Where(e => e.Item1 != e.Item2)
        .OrderBy(e => Math.Abs(e.Item1 + e.Item2 - desiredSum))
        .First();
 
    Console.WriteLine($"{solution.Item1} {solution.Item2}");

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы