Брр...
dccharacter писал(а):мой алгоритм делает заведомо меньше итераций
Возможно. Но для начала хорошо бы определиться, что такое итерация. Тем более при сравнении разных алгоритмов.
dccharacter писал(а):Не даст это абсолютный и точный результат, так как 5.6+6.8=12.4, твой алгоритм учитывает 2.4, но забывает про старший разряд - 1.
Чё?
"Словарь" уже из десяти строк, очевидно, разложит любую вообще мантиссу до любой точности. Возможно неоптимально, но абсолютно точно. Ну то есть берешь тупо по одной цифре и безо всякого поиска (!!!) фигачишь "124" -> "1","2","4" -> "1" "2" "1"+"3" -> 100+20+1+3 - четыре резистора. Неоптимально, но быстро.
Чем больше строк в "словаре", тем оптимальнее будет результат. Причем "оптимальность" растет очень быстро с ростом "словаря".
Например при двухсимвольном словаре "124" разложится на "1" и "24" - то есть на те же два резистора сравнением всего двух вариантов ("1" и "24" - два резистора) и ("12" и "4" - три резистора).
А если словарь будет включать в себя трехзначные строки, то ответ найдется вообще без сравнений.
Получить все трехзначные строки - элементарно (да и можно тупо вбить в программу предрасчитанный массив).
blindman писал(а):сам придумал. честно
Верю. Тогда формализуйте (и не меняйте условий на ходу
).
Я, помнится, учавствовал когда-то в таких "соревнованиях"... Там алгоритмические хитрости - это самое только начало.
Дальше начинается выползание на реализациях (отхапать гигабайты под огромную таблицу, оптимизировать операции ввода-вывода и т.п. )
Организаторы стараются, конечно - обычно даются ограничения на используемую память, объем кода, минимизируют ввод-вывод и т.п.
И все равно легко может победить достаточно простой алгоритм, который в лоб построил таблицу всех возможных ответов, просто потому что "инлайн ассемблер", например.
Предлагаю сгенерить тестовый кейс. А лучше "генератор тестового кейса"...