Обновить

Комментарии 23

Вы бы хоть написали в начале поста что за задачу решаете-то… Ну хотя бы чтобы слова про "знаменитой задаче с монетами, которыми необходимо отсчитать сдачу" были ссылкой на соответствующую статью в википедии.

Согласен. @ТС, я думаю много кто топит вашу статью из-за такого маленького косячка

Знаменитая задача с монетами, это когда надо за несколько взвешиваний определить фальшивую.
НЛО прилетело и опубликовало эту надпись здесь
Советская система 1,2,3,5 — не каноническая?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Пойду поищу точное определение канонической системы.

Будете удивлены. Каноническая монетная система — это такая, для которой жадный алгоритм дает оптимальное решение задачи размена для любого целого числа.

НЛО прилетело и опубликовало эту надпись здесь
Обычная динамика по таблице даёт O(kn), не нужно мемоизации, где k — число номиналов, n — сумма

Мемоизация — меморизация наверное?)

Не знал, что для динамики есть еще одно слово.

Мемоизация — не то же самое, что динамика.

вторая – это количество разрядов числа, представляющего сдачу.

обычный инт64 и цена мл. разряда = минимальной монете и никаких проблем.

Это, в каком то смысле, переоткрытие приближенного решения задаче о рюкзаке с помощью динамического программирования.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Под С я понимаю сумму. Т.е. сложность, как вы справедливо заметили выше: «Сложность Вашего алгоритма — как минимум Ω(n^2). Самый худший для Вас вариант — это когда все номиналы — простые числа. » Только «как максимум»
И да, это вариация динамического программирования. Если для каждой точки запоминать результат, решение будет оптимальным.

А тесты будут?

По ссыске на github есть исходники. Или напишите здесь исходные данные — рассчитаю.

Я к тому, что предлагается поверить что реализация верная.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации