在C 中搜索2D网格

Searching a 2D grid in c++

本文关键字:2D 网格 搜索      更新时间:2023-10-16

请看一下:http://www.geeksforgeeks.org/search-a-word-in-a-a-2d-grid-of-characters/

这是一个C 程序,可搜索一个特定单词的2D网格。

in代码,有两个声明:

int x[]={-1,-1,-1, 0, 0, 1, 1, 1};
int y[]={-1, 0, 1,-1, 1,-1, 0, 1};

有人可以解释一下吗?作者说,这些都是为了在所有8个方向上进行搜索。但是我没有得到什么?

而无需查看代码,我的解释是8个方向由

给出
x     y
-1    -1     left down
-1    0      left
-1    1      left up
 0    -1     down
etc.

这就是两个数组中编码的内容。现在,如果您有两个坐标:

int xx,yy;

您可以在循环中获得所有相邻的坐标:

for (int i=0;i<8;i++) {
    nx = xx + x[i];
    ny = yy + y[i];
}

如果将其描述为对:{{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}},则更容易阅读。这就是您将添加到坐标中的内容。首先是x,第二是y。八个方向是NW,N,NE,W,E,SW,S,SE,它们列为diff。坐标。

,因此您可以进入8个方向,以检查矩阵中的周围字母。想象一下:

NW - N - NE
 |   |   |
 W -curr-E
 |   |   |
SW   S   SE

那是8个方向(西北,向东南),为丑陋的绘画感到抱歉。但是x []和y []中使用的数字只允许您在矩阵中的x和y坐标保持1,向下1,下向下1,向下导航。