3
假设您有一个NxM维矩阵。例如,一个4x4矩阵:在环绕矩阵中寻找相邻单元
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
每个单元格都有八个相邻的单元格。 例如,单元格5的相邻单元格为:0,1,2,4,6,8,9,10。
0 1 2
4 5 6
8 9 10
但邻近的细胞也可以通过矩阵周围包裹发现,所以电池7的相邻细胞2,3,0,5,4,10,11,8
2 3 | 0
6 7 | 4
10 11| 8
你可以同样环绕顶部和底部。
如果你随机选择一个点(p),有没有一种简单的方法来找到所有八个相邻单元的值? 到目前为止,我想出了这个列表,其中m是矩阵的宽度(在我们的例子中是4)。
adjacentcells = [p+1, p-1, p+m, p-m, p+m-1, p+m+1, p-m-1, p-m+1]
for value in adjacentcells:
if value < 0:
value = value + len(matrix)
if value >= len(matrix)
value = value % len(matrix)
adjacentlist.append(value)
但是,当您在角落中选择一个单元格时,将返回7个正确的相邻值和一个错误的单元格。任何人都可以指出我要出错的地方吗?
*复杂(哑)的原因,我存储矩阵作为一个字符串,这就是为什么我能做到LEN(矩阵),并获得16
什么' m'代表? – 2013-03-06 02:41:44
另外,哪七个邻居找到正确,哪一个不正确? – 2013-03-06 02:42:44
@ Code-Guru m是矩阵的宽度(n是高度)。不正确的相邻正方形根据哪个边出点p坐落而变化。 – 2013-03-06 02:51:11