Найти два различных числа в массиве, сумма которых наиболее близка к заданному числу - 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}");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д