goal, начиная с пустой. Есть набор кусков pieces и их цены prices: за prices[i] можно дописать в конец текущей строки кусок pieces[i]. Каждый кусок можно использовать сколько угодно раз (или не использовать вовсе).
Верните минимальную суммарную цену, за которую получится ровно goal. Если собрать goal нельзя, верните -1.goal="banana", pieces=["ban", "ana", "b", "an", "banana"], prices=[4, 3, 1, 2, 20] → 6
Вариант «b» + «an» + «an» не годится: остаётся одна «a», а такого куска нет. «b» + «an» + «ana» стоит 1 + 2 + 3 = 6, а «ban» + «ana» — 4 + 3 = 7. Ответ 6.
goal="door", pieces=["do", "or", "oo"], prices=[1, 1, 1] → 2
После «do» нужно «or» — получаем «door» за 2. Кусок «oo» не помогает: с ним не собрать ни начало, ни конец.
goal="cat", pieces=["ca", "at"], prices=[5, 5] → -1
Куски можно только приписывать в конец, без наложения. «ca» + «at» даёт «caat», а не «cat», так что ответ -1.
goal и pieces[i] состоят из строчных латинских буквgoal="banana", pieces=["ban", "ana", "b", "an", "banana"], prices=[4, 3, 1, 2, 20]
6
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 125 тестов на сервере, включая скрытые.