在矩阵中查找相邻单元的算法

时间:2014-11-23 22:49:04

标签: algorithm matrix

例如,考虑一个非环绕式4x4矩阵;

1 2 5 1 
5 2 5 2  
9 3 1 7 
2 9 0 3

如果我想找到第一行中的5的邻居= 2,5,1。有没有比做两个for循环和添加一堆if条件更有效的解决方案?

1 个答案:

答案 0 :(得分:2)

是。如果你真的需要找到邻居,那么你可以选择使用图表。

图形基本上是与其相邻顶点相对应的顶点类,形成边缘。我们在这里可以看到2形成一个边缘w / 5,1个形成一个边缘w / 5等等。

如果你需要非常频繁地知道邻居(因为如果你不这样做,效率很低),那么实现你自己的顶点类,将值(5)包装在一个通用的T val变量中。有一个相邻数字的哈希表和它们各自的距离(在这种情况下为1,如果你需要找到2的邻居,那么你还需要分配它们)通过将(顶点,距离)添加到哈希表中。

稍后,只需遍历邻居的哈希表即可。

但是,对于一个这么简单的数组,只需要执行for循环并使用“一堆if语句”就没有多少开销。实际上,您只需要对每个方向(4)进行if(边界检查)。

希望这有帮助。