游戏 Ruzzle 中使用的算法

标签 algorithm matrix

我一直在思考游戏中使用的算法Ruzzle一阵子。游戏的目的是在给定的网格中找到任何单词的存在,单词可以在上下、上下、左右、左右、上下对角线等任何方向上匹配。

让我们简单点。在具有相同匹配约束(方向)的二维网格中查找给定单词。时间复杂度最高的算法是什么?

例如,可以在这个网格中找到 FOREVER。

H O F E R

L R E T O

S N V O R

P Q T E N

最佳答案

您可以使用 Trie 进一步优化它数据结构。一旦你用所有的英语单词(或不同的语言)填充了结构,你就可以在 O(1) 中检查是否需要探索特定的相邻字符。

请注意,此时您正在用存储换取时间:您可能需要更多的 RAM 来存储整个 Trie,但查询它的速度要比检查有序的单词列表快。

就游戏背后的架构而言,我认为他们使用专用服务器,该服务器全天候在数据库中存储新游戏(矩阵)及其允许单词列表。在游戏过程中,您的设备会收到一个 ID,它会下载矩阵和允许的单词列表,这足以让您玩游戏。在每场比赛结束时,所有内容都会被删除,最终分数(只是一个整数)会提交给服务器,服务器会更新您的个人资料。在实际游戏中还有更多东西,因为它们也有徽章和统计数据(但收集这些东西是微不足道的)。请记住,这正是我设计和开发它的方式。

你怎么看?我们可以做得更好吗?

关于游戏 Ruzzle 中使用的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659489/

相关文章:

算法 em : comprehension and example

c# - C#.NET 中有没有办法将字符串分解为固定长度的子字符串?

c - 给定一个矩阵,找出行数和列数

matlab - Matlab中矩阵内列顺序的差异

python - 乘法适用于密集矩阵,但不适用于压缩行矩阵

iphone - 处理 iPhone/iPad 上使用 CGPDFScanner 获得的 PDF 文本矩阵 (Tm) 值

algorithm - 相同的前序和后序遍历示例?

c++ - 可变嵌套循环

php - 算法 - 多个研讨会和时间框架之间的理想分配

r - 在R中按组取矩阵中行的乘积