【问题标题】:Finding neighbouring elements of varying size from a 2D-array从二维数组中查找不同大小的相邻元素
【发布时间】:2019-12-19 11:11:27
【问题描述】:

所以我正在尝试创建一个程序,该程序在二维数组中查找所有具有给定邻域大小的相邻元素。 我已经想出了如何从中间元素的角度找到 8 个相邻元素,但是说我想找到 24 个相邻元素,我正在寻找解决方案。

我已经尝试将数字 1 设置为可以更改的变量,但如果我将其设置为 2,它仍然找不到 24 个元素的所有邻居。

我的 8 个元素的解决方案,如果有办法扩展它:

array[i-1][j-1]
array[i-1][j]
array[i-1][j+1]

array[i][j-1]
array[i][j+1]

array[i+1][j-1]
array[i+1][j]
array[i+1][j+1]

【问题讨论】:

  • “34个相邻元素”哪34个?
  • 是的 24(已编辑)。但正在寻找一种解决方案来检查不同的尺寸。 48 将是下一个最大的邻居矩形。
  • 基本上你希望有两个从 -range 到 +range 的循环,同时考虑任何边界和中间。
  • 哪 24 个邻居?

标签: java arrays multidimensional-array neighbours


【解决方案1】:

这是我尝试将 -range 设置为 +range 和边框的方法。但由于某种原因,它似乎仍然没有返回正确的结果。

int neighbourhoodSize = neighbourhoodSize/2; //Say size is t.ex. 11, has to be odd for rectangle
for (int k = 0; k < neighbourhoodSize; k++) {
    for (int i = k; i < arr.length - k; i++) {
        for (int j = k; j < arr[i].length - k; j++) {
            arr[i - k][j - k]
            arr[i - k][j]
            arr[i - k][j + k]
            arr[i][j - k]
            arr[i][j + k]
            arr[i + k][j - k]
            arr[i + k][j]
            arr[i + k][j + k]
        }
    }
}

【讨论】:

  • 我认为您不需要外循环(至少如果您想编写一个查找固定距离内所有邻居的函数)。在内部循环中,您应该只检查一个 arr 元素。还要确保它不是中间。 -- 我会编写一个带有签名 findNeighbours(arr,x,y,range) 的函数,其中 x 和 y 表示数组中中心部分的位置。
  • 另请注意,您应该将这个尝试编辑到您的问题中,而不是将其作为答案发布。
猜你喜欢
  • 2012-09-10
  • 2015-12-26
  • 2016-11-15
  • 2019-04-22
  • 2017-03-12
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多