![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
![]()
Ох... Я себя таким тупым чувствую, но вот очередная задача на рекурсию и снова ноль мыслей
![]() Вот текст задачи (если что): |У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(l). Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача (если она необходима).| Код:
![]() |
![]() |
![]() |
![]() |
#2 |
Любопытная Вредина
Участник клуба
Регистрация: 19.06.2009
Сообщений: 1,285
|
![]()
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
Да уж. Опять напишу "человеческое" (без рекурсии) решение. Задача известная, есть и на многих онлайн-АСМ-системах, и на Алголисте. Фактически можно свести к тому, что у продавца есть монеты свои и покупателя и ему необходимо с них собрать сумму, равную общей сумме минус цена вещи. Есть 2 основных способа решения. Если большие ограничения на количество монет и маленькие - на их номинал, - тогда динамикой. Если маленькие на количество и большие на номинал - тогда нерекурсивным перебором. Сейчас распишу оба способа.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
О, на динамическое решение уже и ссылку бросили. Тогда распишу перебор. Генерим 2ичное число из числа нолей, равного числу монет. Далее на каждом шагу будем увеличивать на 1 это число, пока не дойдем до (2^n)-1. Увеличив, составляем сумму следующим образом - если бит, соответствующий выбраной монете, равен 1, то включаем ее в сумму, иначе - нет. Если сумма равна искомой - есть ответ.
Для увеличения производительности лучше пересчитывать сумму во время самого увеличения числа на 1. |
![]() |
![]() |
![]() |
#5 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
![]()
Погодите! Динамическое программирование - это не рекурсия?! Блин, а там у темы название динамическое программирование, я думал это одно и то же! Больше не буду пытаться рекурсией сделать)
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
Можете рекурсией, можете не рекурсией, как Вам удобно. Но если нету даже примерного представления об алгоритме решения, то рекурсия Вам не поможет.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на языке Pascal. Рекурсия. | (FainT) | Помощь студентам | 6 | 23.05.2009 15:45 |
Рекурсия - сложная задача! | RomT24 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 06.05.2009 23:14 |
Задача про треугольник | YO$YA | Помощь студентам | 10 | 15.11.2008 20:29 |
Монеты 10 коп | KORT | Свободное общение | 7 | 24.08.2007 18:58 |