2014-11-23 72 views
1

例如,考虑一个非回绕4x4矩阵;查找矩阵中相邻单元格的算法

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

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

+3

如果您显示您的代码会很有帮助 – Dinesh 2014-11-23 22:55:23

回答

1

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

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

如果您需要知道邻居非常频繁(因为如果您不),然后实现自己的顶点类,将值(5)包装在一个通用的T val变量中。通过在散列表中添加(顶点,距离),获得相邻数字及其相应距离的散列表(如果需要查找2的邻居,则还需要将它们分配)。

稍后,只需遍历邻居的散列表。

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

希望这会有所帮助。