algorithm - 以最高分数解决拼字游戏

标签 algorithm dynamic-programming string-matching backtracking trie

有人问我一个问题

You are given a list of characters, a score associated with each character and a dictionary of valid words ( say normal English dictionary ). you have to form a word out of the character list such that the score is maximum and the word is valid.

我能想到一个解决方案,涉及由字典构成的 trie 和可用字符的回溯,但无法正确表述。有谁知道或想出正确的方法吗?

最佳答案

首先遍历你的字母并计算你有多少次英文字母表中的每个字符。将其存储在静态中,例如大小为 26 的 char 数组,其中第一个单元格对应于 a,第二个单元格对应于 b,依此类推。将此原始数组命名为 cnt。现在遍历所有单词,并为每个单词形成一个大小为 26 的类似数组。对于此数组中的每个单元格,检查 cnt 中的出现次数是否至少相同。如果是这样,你可以写这个词,否则你不能。如果你能写出这个词,你就可以计算它的分数并最大化辅助变量中的分数。

这种方法将具有线性复杂度,这也是您可能拥有的最佳渐近复杂度(毕竟您得到的所有输入都是线性大小)。

关于algorithm - 以最高分数解决拼字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29918351/

相关文章:

r - 将 "set in a string list"优化为 "set as a matrix"操作

linux - 如何在shell中检索两个单词之间的所有代码?

文本中多词匹配的算法

c++ - 这是将循环锁定为每秒 60 个循环的好方法吗?

algorithm - 数组中最接近的乘法值

algorithm - 广义的两蛋拼图

java - 在 Java 中使用扫描线算法的最近点对

algorithm - 计算最多 2 次交换后的不同排列

Java - 解析此样本数据的最佳方式

url - 在字符串 lua 模式中查找 url