如何解决给定具有特定矩形格式的顶点表,如何找到所有相邻顶点?
a b c d
e f g h
i j k l
m n o p
如果该表的索引如下,如何获取节点的邻接作为索引:
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
例如,节点“a”的结果是:1,4,5。节点“f”的结果是 0,1,2,6,8,9,10。 如何将其扩展为任意大小的表?这是 4x4,那么 10x10 呢? 3x4? 这可以用代码找到吗?首选 c++。
到目前为止,我尝试过:由于它是 4x4,我尝试从相关节点的索引中减去 4 并添加 4。然而,这并不适用于每个节点,尤其是边缘和角节点。
解决方法
在这里,每个节点都连接到 8 向方式。因此,我们将尝试获取 8 个相邻单元格的网格数。
default
输出:
// starting from upper left corner for a cell
int dr[8] = {-1,-1,1,0}; // 8 direction row
int dc[8] = {-1,-1}; // 8 direction column
int n = 20;
int m = 30;
int r = 1,c = 1; // position of 'f' is (1,1)
for(int i = 0; i < 8; i++) {
int adjr = r + dr[i];
int adjc = c + dc[i];
if (adjr < 0 || adjr >= n || adjc < 0 || adjc >= m) continue; // check for invalid cells
cout << adjr << " " << adjc << endl; // {row,column} which is connected
}
这些单元格连接到 (1,1)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。