![]() |
|
![]() ![]() ![]() |
|
RobinHack |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Есть ли готовый агоритм, при помощи которого можно разложить число n на всевозможные суммы его состовляющие. Скажем есть число 6. Алгоритм должен вернуть множество вида {1+1+1+1+1+1, 1+2+3, 2+2+2, 4+2, 1 + 4 + 1, 5 + 1, .......}. Причем без повторений, т.е без элементы 4+2 и 2+4 это одно и тоже. Спасибо.
Это сообщение отредактировал(а) RobinHack - 27.1.2009, 16:28 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Да, есть... обычный рекурсивный подбор.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
esperanto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
да есть - динаммическое программирование
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
RobinHack |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Чем я сейчас и занимаюсь. ![]() |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Странно. Задача ведь не в нахождении количества, а в нахождении самих разбиений. Динамическое программирование в этом плане ничуть не лучше перебора.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Я бы даже сказал, что перебор лучше - накладнЫе расходы меньше.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
esperanto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
голословное заключение. --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
Silent |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Как-то так
|
|||
|
||||
Rimch |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.6.2007 Репутация: 1 Всего: 3 |
Представление числа в виде суммы чисел - классическая задача теории алгоритмов.
Пример разложения числа 7 7= 1+1+1+1+1+1+1 7= 2+1+1+1+1+1 7= 2+2+1+1+1 7= 2+2+2 +1 7= 3+1+1+1+1 7= 3+2+1+1 7= 3+2+2 7= 3+3+1 7= 4+1+1+1 7= 4+2+1 7= 4+3 7= 5+1+1 7= 5+2 7= 6+1 7= 7 Идея решения Пусть дано число N которое надо разложить 1. Заполняем массив А(массив суммируемых чисел) из N элементов единичками 2. Начиная с последнего элемента ищем позицию элемента который надо увеличить на +1, удовлетворяющего условию A[pos-1]>A[pos], pos>1 3. Увеличиваем элемент на позиции pos на 1, остальные заполняем необходимым количеством 1 4. Повторяем шаги 2 и 3 пока первый элемент массива не станет равным N |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Вооот, пришел человек с мозгом, не загруженым большущими знаниями и высказал простейшее и нормальное решение
![]() А так, соглашусь с Akina и maxdiver -------------------- Всем добра ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |