在c ++中搜索2D网格

时间:2016-06-23 20:24:41

标签: c++ arrays matrix multidimensional-array 2d

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

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

在代码中,有两个声明:

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

任何人都可以解释这些吗?作者说这些是用于搜索所有8个方向的。但我不知道怎么办?

3 个答案:

答案 0 :(得分:0)

不看代码,我的解释是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 :(得分:0)

如果被描述为成对,那么将更容易阅读:{{-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。坐标。

答案 2 :(得分:0)

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

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

那些是8个方向(西北,向下到东南),对于丑陋的绘画感到遗憾。但是x []和y []中使用的数字只允许向上导航1,向下导航1,或者对矩阵中的x和y坐标保持相同。