最有效地搜索跨多个单元的2D数字数组

问题描述 投票:1回答:1

我有一系列8x8 2D阵列。数组中的每个单元格可以包含一个从0到9的值作为一个整数。单元格也可以具有值-1,但这表示空单元格或无效单元格。然后,我会得到一段时间的序列。如何搜索2D数组以查找序列?一个2D数组可能包含多个序列,但并非所有序列都可以在一个2d数组中找到。序列不能改变方向,但是可以左右移动,直到碰到数组的边缘或无效的单元格为止。

Example:
[4,6,8,1,4,5,7,-1]
[6,3,1,9,0,3,3,1]
[1,6,7,9,3,-1,7,1]
[1,6,7,-1,4,3,1,2]
[1,4,5,6,-1,8,3,1]
[8,0,1,3,5,6,2,0]
[0,6,9,8,2,6,8,2]
[2,6,9,0,4,3,5,1]

需要找到序列:1121021、524、15340962、16793、13309136

代码在C#中。

我应该在寻找路径查找算法还是搜索算法?

c# arrays algorithm search
1个回答
0
投票

序列无法改变方向,因此您不需要查找白平衡。

Insteas寻找string searching algorithms

这里您需要查找多种模式,所以

Aho–Corasick string matching algorithm (extension of Knuth-Morris-Pratt)
Commentz-Walter algorithm (extension of Boyer-Moore)
Set-BOM (extension of Backward Oracle Matching)
Rabin–Karp string search algorithm

是适当的。

对于反向方向,例如13309136,可以创建反向图案。

© www.soinside.com 2019 - 2024. All rights reserved.