微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查所有相邻点的算法

如何解决检查所有相邻点的算法

我正在尝试找到遍历网格中所有相邻单元格的最有效方法

例如,假设我有一个二维数组表示为: vector <Item> grid;

,我在此网格内有一个点(由蓝色单元格表示): grid[x][y];

enter image description here

并且我希望它遍历所有相邻坐标。

例如,如果我的观点是(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 举报,一经查实,本站将立刻删除。