leetcode-162周赛-1255-得分最高的单词集合
题目描述:
方法:穷举暴力
class Solution: def maxScoreWords(self, words: List[str], letters: List[str], score: List[int]) -> int: from collections import Counter n = len(words) v = lambda c: ord(c) - ord('a') words = [Counter(v(c) for c in w) for w in words] scores = [sum(score[k]*v for k, v in w.items()) for w in words] avail = [0]*26 for c in letters: avail[v(c)] += 1 best = [0] curr = [0] def dfs(i): if i == n: best[0] = max(best[0], curr[0]) return dfs(i+1) if all(avail[k] >= v for k, v in words[i].items()): for k, v in words[i].items(): avail[k] -= v curr[0] += scores[i] dfs(i+1) curr[0] -= scores[i] for k, v in words[i].items(): avail[k] += v dfs(0) return best[0]