Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Toen
0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 50
#1

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

04.12.2013, 21:45. Просмотров 873. Ответов 5
Метки нет (Все метки)

Найти два различных элемента массива, сумма которых наиболее близка к числу R. С соседними все понятно, но как перебрать все различные суммы. Допустим массив 1 1 2 5 4 6 5, надо сложить 1+1=2 потом 1+2...1+5 и тд и сравнить все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 21:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти два различных элемента массива, сумма которых наиболее близка к числу R (C++):

Найти два различных элемента массива, сумма которых наиболее близка к числу R - C++
Дано число R и массив размера N. Найти два различных элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в...

Найти два элемента массива, сумма которых наиболее близка к заданому числу. - C++
Помогите пожалуйста, срочно нужно написать такую программу: задано действительное число R і массив размера N. Найти два елемента массива,...

Найти два элемента массива, сумма которых наименее близка к данному числу R - C++
1)Дано вещественное число R и массив размера n. Найти два элемента массива, сумма которых наименее близка к данному числу R. 2) Дан...

Найти два элемента массива, сумма которых наименее близка к данному числу - C++
Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.

Найти два соседних элемента массива, сумма которых минимальна - C++
Дан массив.Найдите два соседних элемента,сумма которых минимальнп.

Найти два соседних элемента массива, сумма которых максимальна - C++
Доброго времени суток! Прошу помощи в решении следущих задач, которые впрочем можно решить и на Borland C++ Builder, но я предпочитаю...

5
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 22:24 #2
Как на счет найти все сочетания этого массива, поместить их в другой массив вместе с R, сортировать (по возрастанию или убыванию), найти соседние элементы R, по очереди отнять их от R, найти модуль этих двух чисел, которое окажется меньше - то и правильное.
0
warcraft33
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 11
03.04.2018, 19:36 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
int main(){
   const int SIZE = 6;//Размер массива
   int array[SIZE];//Обьявляем массив
   int r;//число R
   int i, j;//Индексы
   int result;//здесь будет результат
   int k, f;//нуилучший результат индексов
   cin >> r;//ввоим число R
   for (i = 0; i < SIZE; i++)cin >> array[i];
   /*Суть в том что мы будем брать результат 2 элементов массива не больше самого элемента и индексы самого большего результата и результат мы запомним*/
   k = 0; f = 1,result=array[0]+array[1];
   for (i = 0; i < SIZE; i++)//Выбираем первый элемент
      for (j = 0; j < SIZE; j++)//Выбираем второй элемент
         if (array[i] != array[j] && (array[i] + array[j])>result&&(array[i]+array[j])<=r){//Если сумма элементов меньше чем R и результат
            result = array[i] + array[j];//запоминаем сумму
            k = i;//запоминаем индекс 1
            f = j;//запоминаем индекс 2
         }
   //вывод в порядке возрастания индексов
   if (k>f)cout << array[k] << " " << array[f] << "\n";//Если индекс i (k) больше чем j (f)
   else cout << array[k] << " " << array[f] << "\n";//Если индекс i (k) меньшее чем j (f)
   system("pause");
   return 0;
}
0
Байт
Эксперт C
17663 / 11703 / 1864
Регистрация: 24.12.2010
Сообщений: 23,348
03.04.2018, 20:17 #4
warcraft33, учитывая коммутативность сложения, я бы устроил вши циклы так
C++
1
2
3
4
5
for(i=0; i<SIZE - 1; i++) {
  for(j=i+1; j<SIZE; j++) {
    if ((i==0 &&j==1) || ...) // Новая пара
 }
}
0
warcraft33
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 11
03.04.2018, 20:28 #5
ну так тоже можно)насчет оптимизицаии честно говоря я особо незадумывался)
0
Байт
Эксперт C
17663 / 11703 / 1864
Регистрация: 24.12.2010
Сообщений: 23,348
03.04.2018, 20:34 #6
Цитата Сообщение от warcraft33 Посмотреть сообщение
насчет оптимизиции честно говоря я особо не задумывался)
Я вас и не сужу строго. Просто, если я вижу возможность некоторого улучшения - почему бы не поделиться с товарищами?
И знаете, поскольку я программист работающий, а не сдающий зачеты, все эти штуки у меня в подкорке сидят
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2018, 20:34
Привет! Вот еще темы с ответами:

Найти два элемента, стоящих друг за другом, сумма которых больше максимального числа массива - C++
В массиве D найти, есть ли два элемента, стоящих друг за другом, сумма которых больше максимального числа. Вывести на печать эти значения,...

Даны два неубывающих массива X=(xi),i=1.n, n<=10, и Y=(yi),i=1.m, m<=10 и число q. Найти сумму вида (x(i)+y(j), наиболее близкую к числу q - C++
Даны два неубывающих массива X=(xi),i=1..n, n&lt;=10, и Y=(yi),i=1..m, m&lt;=10 и число q. Найти сумму вида (x(i)+y(j)), наиболее близкую к...

В массиве Y1, ... , Yn найти два элемента, среднее арифметическое которых равно заданному числу X - C++
Даны натуральное число n, действительное число x и массив действительных чисел y1, ... , yn. В массиве y1, ... , yn найти два элемента,...

В массиве Y1, ... , Yn найти два элемента, среднее арифметическое которых равно заданному числу X - C++
Даны натуральное число n, действительное число x и массив действительных чисел y1, ... , yn. В массиве y1, ... , yn найти два элемента,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru