![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
_snikers_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
Привет мастера!
есть задачка: задано неограниченное количество монет ЛЮБОГО номинала. (например 2, 3, 7,15 или 1,4,7,25,50,70) Задана сумма С. нужно узнать сколько есть РАЗНЫХ способов представить суму С через заданые монеты пример: пусть номиналы: 2,3,5 а сумма 12. тогда 12=2+2+2+2+2+2 =2+2+2+3+3 =3+3+3+3 =2+5+5 =5+3+2+2 тоесть 5 вариантов Помогите плиз решить эту задачку.. Есть вариант перебрать все комбинации из номиналов но если номиналов например 20, то перебирать нужно оч долго... Заранее спасибо! Жду ответа. |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
||||
|
||||
_snikers_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
||||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 1 Всего: 29 |
||||
|
||||
nostromo |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: 4 Всего: 10 |
Простая переборная задача. Действительно, начиная со старшего номинала рекурсивно можно свести исходную задачу к этой задаче с меньшими значениями параметров.
Вот реализация на Smalltalk (VisualWorks). (Предполагается, что последовательность список номиналов монет отсортирован по возрастанию. Если это не так, то все равно работает, только эффективность меньше.)
Проверяем:
Добавлено @ 17:17
--------------------
На пыльных тропинках далеких планет останутся наши следы. |
||||||
|
|||||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 13 Всего: 31 |
если еще актуально.. Подбельский Вадим Валерьевич =)
.."программа находит разложение чисел, то есть разложение 4 это 4, 3+1, 2+2, 2+1+1, 1+1+1+1" в функции partition m - число, n - это максимальная часть на которую он раскладывается ( монета макс достоинства у nostromo) - в данном случае тоже 4.
правда также пишется, что функция неэффективна так как некоторые значения будут вычисляться многократно. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
_snikers_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
как раз актуально.... это то что нада....... торлько бы на delphi (pascal)
|
|||
|
||||
nostromo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: 4 Всего: 10 |
Замечу, что программа Rockie не "находит разложение чисел", а подсчитывает количество вариантов в частном случае задачи, когда заданы N монет достоинством 1, 2, ...,N.
Добавлено @ 17:36 Прошу прощения, не "N монет", а N номиналов монет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |