请看一下: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个方向的。但我不知道怎么办?
答案 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坐标保持相同。