Я ищу эффективный алгоритм, чтобы сделать следующее.
Учитывая таблицу / словарь подсчета букв
counts = {'a': 3, 'b': 2, 'd': 2, 'e': 2, 'k':2, 'r': 2 }
и список М слов
words = ['break, 'add', 'build' ... ]
написать функцию, которая находит N слов, используя все буквы (и слова из списка)
>>> find_words(counts, words, 3)
['break', 'break', 'add']
Наивный подход обойти все слова N раз слишком медленно (я думаю, что это O (m ^ n)).