Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [Решено]Алгоритм для математической задачи  (Прочитано 1083 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн truegeek

  • Автор темы
  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Дано: имеем сумму равную, например: 10 000, и набор номиналов равных, например 5000, 1000, 500, 100, 50, 10. Прямо как с деньгами )))
Цель: найти максимальное количество вариантов сложения номиналов, чтобы получить исходную сумму.
Вопрос: кто-нить знает какой-нибудь красивый алгоритм решения подобной задачи?

Задача мной реализована, но мне не очень нравится алгоритм моего решения. Хочется узнать каким образом реализовали бы Вы эту задачу? ))) Ну, или уже реализовали.

Если у кого-то возник вопрос зачем это мне, то отвечу сразу: "Это не мне, это знакомый-студент попросил сделать".
Если бы я был бы программистом, то скорее всего знал бы ответ на этот вопрос, но я не он ;)
« Последнее редактирование: 17 Декабря 2010, 17:00:47 от truegeek »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #1 : 09 Декабря 2010, 18:53:50 »
Помнится что-то похожее я где-то видел: http://habrahabr.ru/blogs/sport_programming/109384/

Оффлайн truegeek

  • Автор темы
  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #2 : 09 Декабря 2010, 19:18:52 »
Помнится что-то похожее я где-то видел: http://habrahabr.ru/blogs/sport_programming/109384/
похожая задача да, только они ищут количество комбинаций, а я ищу сами комбинации, как-то так!!!
но все равно спасибо за ссылку ;)

Оффлайн Ururu_2

  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #3 : 10 Декабря 2010, 20:26:51 »
У тебя по сути задача сводится к решению уравнения вида :
10a+50b+100c+500d+1000e=10 000Где коэффициенты при неизвестных - возможные номиналы банкнот. Как такие уравнения решаются, не помню, но как-то наверняка решаются. :)
« Последнее редактирование: 10 Декабря 2010, 20:40:41 от truegeek »

Оффлайн truegeek

  • Автор темы
  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #4 : 10 Декабря 2010, 20:34:15 »
У тебя по сути задача сводится к ...
хм... оригинально, я почему-то об этом не подумал. спасибо, попробую реализовать и с помощью такого подхода.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #5 : 10 Декабря 2010, 20:38:26 »
10a+50b+100c+500d+1000e=10 000
А такие штуки классно решаются CSP системами. В частности - http://en.wikipedia.org/wiki/Gecode
« Последнее редактирование: 10 Декабря 2010, 20:40:28 от truegeek »
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн truegeek

  • Автор темы
  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Алгоритм для математической задачи
« Ответ #6 : 10 Декабря 2010, 20:49:38 »
А такие штуки классно решаются CSP системами. В частности - http://en.wikipedia.org/wiki/Gecode
ну, вспомогательные инструменты - это хорошо.
тогда уж лучше воспользоваться MathLab'ом )))
Мне до CSP систем, как до Китая... Я к сожалению программист-любитель, два года уж как не могу себя заставить ООП освоить. Так что мне наверное не нужно такие сложные вещи знать, да и рано. Хотя за информацию, спасибо )))
________________________________________________
гугл привел меня к http://www.integr.org/olimp/3-1-1.htm
тема закрыта.
« Последнее редактирование: 17 Декабря 2010, 17:00:29 от truegeek »

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.