|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.08.2009, 17:12 | #1 |
Новичок
Джуниор
Регистрация: 02.08.2009
Сообщений: 5
|
Пожалуйста напишите программу
Сложно объяснить, но попытаюсь:
Дается 10 чисел х1,х1,х3...х10. Нужно из предложенных чисел найти 2 суммы, ответы которых, будут как можно ближе друг к другу и являться целыми числами. Обе суммы вывести на экран. Пример: 50; -16; 24; 10; 4; -2; 0; 6; -5; -2 Сумма всех чисел равна 69, т.е. ответы сумм должны быть 34 и 35 соответственно. Теперь находим составляющие сумм. На экран должно вывести: 50-16-5+6+0=35 24-2-2+10+4=34 |
02.08.2009, 18:01 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
мне кажется, что в общем случае задача не решается...
например, даны числа 70; 0; 1; 1;1;1;1;1;1;1 сумма = 78 дальше что?.... |
02.08.2009, 18:13 | #3 |
Новичок
Джуниор
Регистрация: 02.08.2009
Сообщений: 5
|
Цифры всегда даются такие, чтобы из них которых могли выйти равные суммы.
Последний раз редактировалось Vasilisk; 02.08.2009 в 18:16. |
02.08.2009, 18:25 | #4 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
Сумма 1=70(или 70, или 70+0), Сумма 2= 8(0+1+1+1+1+1+1+1+1, или 1+1+1+1+1+1+1+1) Т.е. получить 2 сочетания с минимальной разностью их сумм. |
|
02.08.2009, 18:26 | #5 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
я вот тут надумал алгоритмик:
Ищем максимальное число и второе по величине число в массиве, а затем записываем их в разные суммы. Потом из оставшихся чисел находим наибольшее и второе - наибольшее пишем к меньшей сумме, а второе к большей. И так до пока весь массив не перебере. Осталась только реализация... |
02.08.2009, 18:29 | #6 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Вот это как раз не подойдет. Нужно сначала брать каждое число и сравнивать с суммой остальных, затем все варианты двух чисел и сумму остальных, потом трех, четырех, пяти, и искать минимальную разность сумм.
|
02.08.2009, 20:13 | #7 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
Я бы сделал перебором всех вариантов сумм, а затем среди вариантов искал бы минимальную разность. Например, если учесть, что суммы будут состоять из равного количества слагаемых и от перестановки слагаемых сумма как известно не меняется. При n=10 значениях я насчитал 1+2+...+n/2+1=1+2+3+4+5+6=21 вариант.
|
02.08.2009, 20:21 | #8 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
|
|
02.08.2009, 22:27 | #9 | |
Новичок
Джуниор
Регистрация: 02.08.2009
Сообщений: 5
|
пока только варианты, я тоже многое перебрал, но реализовать не могу...
И не забываем, что каждая сумма должна состоять из 5 чисел. На примере видно Цитата:
Последний раз редактировалось Vasilisk; 02.08.2009 в 22:37. |
|
03.08.2009, 11:50 | #10 |
Пользователь
Регистрация: 15.01.2009
Сообщений: 52
|
Код:
вот тут один из частых случаев, когда есть большое число а сумма остальных положительных чисел меньше этого числа допустим в файле входные данные 3 6 8 71 4 6 3 10 -20 -3 . А для общего случая ничего на ум , кроме тупого перебора не приходит. То есть находим сумму всех чисел, делим ее на 2, и потом перебираем всевозможные случае сумм чисел, и какая комбинация показала наиболее близкий результат к половине суммы всех чисел, то и ответ. Вторую половину найти будет не сложно. Последний раз редактировалось Stilet; 03.08.2009 в 12:11. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
напишите программу C++ | vo_sa | Общие вопросы C/C++ | 1 | 02.06.2009 18:00 |
Напишите программу за деньги! | Nickolas1 | Фриланс | 2 | 29.04.2009 19:50 |
Напишите пожалуйста паскаль-программу | Fylhtq | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.04.2009 20:35 |
напишите программу | nyncuk | Помощь студентам | 3 | 19.06.2008 14:39 |