![]() |
|
![]() ![]() ![]() |
|
MichaelMPEI |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
Дан ряд случайных чисел. Необходимо его разделить на 2 так, чтобы сумма чисел в каждом из них была одинакова. Простым перебором слишком долго. Может, кто подскажет метод побыстрее?
Заранее спасибо. |
|||
|
||||
knark |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 21.1.2006 Репутация: нет Всего: нет |
Сумма чисел где?
![]() |
|||
|
||||
MichaelMPEI |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
Сумма чисел в каждом из полученных рядов.
Например есть ряд: 1, 2, 3, 4, 6, 7, 8, 9. Первый ряд: 1, 2, 8, 9. Сумма 20 Второй ряд: 3, 4, 6, 7. Сумма 20 |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
исходя из условия у нас есть две суммы А и Б и что что А=Б=общая_сумма/2
То есть Задача сводится к нахождению группы чисел, которая в сумме даст А. Придётся таки все перебирать на это условие. Это вроде один из подразделов "магического" квадрата. Там тоже только перебор. Но это лучше, чем перебирать по начальному условию. Ограничения, если числа сгенерены случайно. Решение отсутствует, если: Общая сумма всех чисел не кратна 2. Все числа позитивны и присутсвует число Х, и Х > А -> Разделить будет невозможно. Добавлено @ 02:27
В йтом примере будет работатьтак: summa= 1+2+3+4+6+7+8+9; //=40; A=summa/2; //=20 Осталось найти, какие числа из 1, 2, 3, 4, 6, 7, 8, 9 в сумме дадут 20 |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
А если A число нечетное, то можно подумать над тем не лепить ли его из нечетных чисел сначала, а лишь потом если не получится работать с четными. Ну и если А четное, то соответственно наоброт.
В данном случае А = 20 значит идем и складываем все четные числа 2+4+6+8... о 20 ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
только вопрос, возможны ли там негативные числа также и/или одинаковые
|
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Я считаю что все просто:
Сортируешь ряд исходных чисел, потом первое и последнее счисло в ряд1, второе и предпоследнее в ряд2, третье и ... в ряд1 ит.д. Потом уже перебором корректируешь эти ряды. Для ряда 1 2 3 4 5 6 7 8 9 будет так: ряд1: 1 9 3 7 ряд2: 2 8 4 6 Корректировки в данном случае не нужны. В другом случае могут быть. Добавлено @ 05:59 Да. Если это так, то корректировки делать бесполезно. -------------------- Всем добра ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ну блин же ж... задача о рюкзаке в чистейшем виде... чего спрашивать-то?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Это что такое? И как решать тогда? -------------------- Всем добра ![]() |
|||
|
||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
только перебор это классическая НП полная задача
-------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Поиск никто не отменял. В т.ч. в Инете. NP-полная задача с временем O(n)??? ну-ну.. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
http://www.cs.brown.edu/courses/cs051/assign/hw10.sol.ps Посмотрите тут вторую задачу. Она НП полная, но в то жевремя немного проще задачи, решенной вами за линейное время. Видимо вы доказали что НП=П. Поздравляю. с уважением -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |