Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 13:49   #1
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию Набрать сумму чисел (Delphi)

Здравствуйте!
Не могу сообразить, как сделать следующее: необходимо набрать сумму из предоставленных чисел, не больше заданного числа.
К примеру дан массив: 2 7 5 3 7, из этих чисел нужно собрать число, к примеру 16. Т.е. 2+7+7 = 16. Подскажите, пожалуйста реализацию?
d3qoot вне форума Ответить с цитированием
Старый 17.03.2012, 15:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

только полный перебор..
для небольшого количества чисел (до 30) будет работать достаточно быстро и с гарантией получения наиболее оптимального решения.

а за конкретными алгоритмами и решениями очень рекомендую сходить в тему:
Выборка чисел

и сюда
подбор группы файлов до заданого размера

Последний раз редактировалось Serge_Bliznykov; 17.03.2012 в 16:03.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2012, 17:48   #3
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию

К сожалению, по условию задачи чисел может быть до 1000.
Накидал примерный алгоритм, не знаю, получится ли:
Как в задании, нам нужно найти сумму 16.
Код:
Ищем в массиве 16. Если 16 нет, ищем 15 и т.д. пока не встретится число, которое есть в массиве.
Нашли - это число 7. В переменную запишем, сколько нам ещё осталось искать в массиве, т.е. - 16-7=9 и обнулим использованную ячейку массива.
Дальше ищем по массиву 9, 8, 7. Встречается ещё раз 7.
Запишем в переменную 9-7=2 и обнулим использованную ячейку.
Далее ищем в массиве уже 2. Если находим - выход. Если не находим начинаем поиск заново, но не используя первое число 7.
Есть какие-нибудь мысли?

Последний раз редактировалось d3qoot; 17.03.2012 в 18:24.
d3qoot вне форума Ответить с цитированием
Старый 17.03.2012, 20:07   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
только полный перебор..
А просто отсортировать и брать с самых минимальных пока не сравниться с нужным числом?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.03.2012, 00:22   #5
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А просто отсортировать и брать с самых минимальных пока не сравниться с нужным числом?
Так в том то и дело, что данная сумма (в задаче) набирается из двух наибольших (7) и одного самого маленького!

Пытался реализовать свой алгоритм, который написал в 3 сообщении, но что-то пока не получилось.
d3qoot вне форума Ответить с цитированием
Старый 18.03.2012, 12:58   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от d3qoot
набрать сумму из предоставленных чисел, не больше заданного числа.
d3qoot, поясните условие. Нужно набрать сумму ТОЧНО совпадающую с заданным числом, или "не более заданного числа" ?

Если сумму нужно набрать точную (а в случае, когда это нельзя сделать точно - выдавать сообщение о том, что это сделать). И перебор чисел из отсортированного массива не займёт много времени даже для 1000 чисел.

если же сумма может быть меньше заданного числа, тогда вопрос - это должна быть ОПТИМАЛЬНО ВОЗМОЖНАЯ сумма?
Если нет - то опять таки задача сильно упрощается.

Если не секрет, Вы это для чего делаете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2012, 13:23   #7
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию

Serge_Bliznykov, Готовлюсь к олимпиаде.
Само по себе условие должно быть такое:
Код:
min<a<max
где:
A - число, которое нужно набрать из массива.

Для примера:
min = 25
max = 27
соответственно, необходимо набрать сумму из массива равной 26.

Последний раз редактировалось d3qoot; 18.03.2012 в 19:08.
d3qoot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В двумерном массиве 3 x 5, состоящем из целых чисел, найти сумму элеметов нечётных строк. (Delphi) Мария я Помощь студентам 1 30.04.2011 10:19
Задача на паскале (набрать заданную сумму денег) Старый Gilbert Помощь студентам 4 21.03.2011 15:12
Delphi. получить сумму тех чисел которые кратны 5 и имеют отрицательное значение Crabobass Помощь студентам 4 06.03.2011 22:21
Набрать номер по модему. Различие в реализации кода Delphi 2007 и 2010. plato Общие вопросы Delphi 8 06.04.2010 09:47
цикл for to do, или как отобразить сумму всех чётных трёхзначных чисел которые делятся на 7 (Delphi 6) Lorden Помощь студентам 9 23.12.2008 18:50