Ctrl K

Лучший набор слов из фишек

Сложная
Вы играете в словесную игру. На руках фишки с буквами tiles (буквы могут повторяться), каждая фишка используется не больше одного раза. Есть список слов words; каждое слово списка можно выложить не больше одного раза. Стоимость буквы задаёт массив points из 26 чисел: points[0] — стоимость a, points[1] — b, и так далее до z. Стоимость слова — сумма стоимостей его букв. Выберите набор слов, которые все вместе можно выложить из имеющихся фишек, с наибольшей суммарной стоимостью, и верните эту стоимость. Использовать все фишки не обязательно; пустой набор стоит 0.
Пример 1
words=['bee', 'tea', 'eat', 'beet'], tiles=['b', 'e', 'e', 't', 'a'], points=[1, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0] → 7

Очки: a=1, b=3, e=1, t=2. «beet» даёт 3+1+1+2 = 7 и забирает все фишки, кроме «a». «tea» и «eat» вместе не собрать — фишка «t» одна, а по отдельности каждое даёт лишь 4.

Пример 2
words=['ab', 'ab'], tiles=['a', 'b', 'a', 'b'], points=[2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] → 14

Это два разных слова списка, фишек хватает на оба: 2 · (2 + 5) = 14.

Пример 3
words=['zz'], tiles=['z'], points=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10] → 0

Для «zz» нужны две фишки «z», а есть одна. Ни одного слова не выложить — ответ 0.

Ограничения
  • 1 ≤ len(words) ≤ 14
  • 1 ≤ len(words[i]) ≤ 15
  • 1 ≤ len(tiles) ≤ 100
  • каждый элемент tiles — одна буква
  • len(points) = 26
  • 0 ≤ points[i] ≤ 10
  • words[i] и tiles[i] состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКак рассчитаться за меньше переводов СложнаяСклейка фрагментов СложнаяЦепочки с квадратными суммами СложнаяЗаказы из одинаковых деталей СложнаяЧестно поделить задания Сложная
загружаем Python…
Вход
words=['bee', 'tea', 'eat', 'beet'], tiles=['b', 'e', 'e', 't', 'a'], points=[1, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0]
Ожидается
7

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 54 теста на сервере, включая скрытые.