如何解决检查所有相邻点的算法
我正在尝试找到遍历网格中所有相邻单元格的最有效方法。
例如,假设我有一个二维数组表示为:
vector <Item> grid;
,我在此网格内有一个点(由蓝色单元格表示):
grid[x][y];
并且我希望它遍历所有相邻坐标。
例如,如果我的观点是(1,1),它将能够遍历(0,0)(0,1)(0,2)(1,0)(1,2)(2,0 )(2,1)(2,2)是围绕它的8个点(目前不包括(x,y)在角或网格边缘的情况。
用C ++做到这一点的最佳方法是什么?我最初的想法是进行广度优先搜索,有什么想法吗?
解决方法
这是迭代邻居的一种方法:
for (int i : {-1,1})
for (int j : {-1,1})
if (i && j)
std::cout << grid[x + i][y + j]; // prints all the neighbours
请确保还要考虑grid
的边缘。
这只是一种迭代邻居的可读方法。除非您已经测量了代码并发现该代码是性能瓶颈,否则不要担心效率。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。