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

给定具有特定矩形格式的顶点表,如何找到所有相邻顶点?

如何解决给定具有特定矩形格式的顶点表,如何找到所有相邻顶点?

如果我有一个由以下表示的顶点表:

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 举报,一经查实,本站将立刻删除。