gpt4 book ai didi

c++ - 从矩阵中查找距离 k 内的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:20 24 4
gpt4 key购买 nike

给定一个 n*n 矩阵和一个值 k,我们如何找到每个元素的所有邻居?例如:在 4*4 矩阵中,k=2说矩阵是:

[ 1  2  3  4
5 6 7 8
9 10 11 12
13 14 15 16]

这些值是位置的索引,1 的邻居是 1,2,3,5,6,9。值 3,6 和 9 的出现只是因为 k = 2,如果 k = 1 则不会出现。

类似地,6 的邻居将是 1 2 3 5 6 7 8 9 10 11 和 14

你能帮我写一个c代码来用c++实现吗。

这是冯·诺依曼邻域的问题,请有人用c++实现它。谢谢

最佳答案

您的邻居将在您的目标元素周围形成菱形图案。菱形的点将距离目标元素 k 跳。所以顶部将是 k 行,左边将是 k 列,等等。当你从一个级别到另一个级别时,菱形均匀扩展。如果您从最高点开始并向下移动一行(靠近目标节点),那么您将向每一侧输出 1。它在其他方向上是对称的。换句话说,邻居节点和目标节点之间的 x 坐标差加上 y 坐标差将为 <= k。

所以只需创建两个嵌套的 for 循环来迭代这个菱形。外循环遍历行,内循环遍历列。从顶部开始,然后在每次外循环迭代时将菱形扩展 1,直到到达与目标元素相同的行,然后收缩直到到达底部点。显然,您需要测试超出矩阵的边界条件。

关于c++ - 从矩阵中查找距离 k 内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com