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

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

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

//Дан массив и число "p". Найдите два различных числа в массиве, сумма которых наиболее близка к "p". Проблема в том, что я заранее присваиваю большое значение, но мне не нравится как это реализовано
Листинг программы
  1. int[] array37 = new int[20];
  2. Random randNumb = new Random();
  3. int p = 14;
  4. int sumClose = 100;
  5. int min = 0;
  6. int index1 = 0, index2 = 0;
  7. int intermediateStep = 0;
  8. for(int i = 0; i < array37.Length; i++)
  9. {
  10. array37[i] = randNumb.Next(0, 11);
  11. }
  12. foreach(int show in array37)
  13. {
  14. Console.WriteLine(show);
  15. }
  16. Console.WriteLine();
  17. for(int i = 0; i < array37.Length; i++)
  18. {
  19. for(int j = 0; j < array37.Length; j++)
  20. {
  21. if(i == j)
  22. {
  23. continue;
  24. }
  25. intermediateStep = array37[i] + array37[j];
  26. min = p - intermediateStep;
  27. if(Math.Abs(min) <= sumClose)
  28. {
  29. index1 = i;
  30. index2 = j;
  31. sumClose = min;
  32. }
  33. }
  34. }
  35. Console.WriteLine(array37[index1] + " " + array37[index2]);
  36. Console.WriteLine(sumClose);
  37. Console.ReadKey();

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

13   голосов , оценка 3.692 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы