在二维数组中寻找最小的邻居

欧文·图拉曼(Owen Tourlamain)

我有一些代码应该在2D数组中找到8个相邻单元中的最小单元。运行此代码时,最小的代码将移至该代码,然后再次在循环中运行。但是,当它运行时,代码最终会给出堆栈溢出错误,因为它会在两点之间不断跳转。这似乎是一个逻辑悖论,好像Y <X然后X!<Y。因此它认为这是我的代码有错,而不是我的逻辑。这是我的代码:

private Point findLowestWeight(Point current) {
    float lowest = Float.MAX_VALUE;
    Point ret = new Point(-1, -1);
    LinkedList<Point> pointList = new LinkedList<Point>();
    for (int i = -1; i <= 1; i++) {
        for (int j = -1; j <= 1; j++) {
            if (!(i == 0 && j == 0)) {
                if ((current.x + i >= 0 && current.x + i <= imageX - 2) 
                 && (current.y + j >= 0 && current.y + j <= imageY - 2)) {
                    pointList.add(new Point(current.x + i, current.y + j));
                }
            }
        }
    }
    for (Point p : pointList){
        if (map[p.x][p.y] < lowest){
            lowest = map[p.x][p.y];
            ret = p;
        }
    }
    return ret;
}
橙色蜜饯

您需要停下来的情况。

在2D阵列中找到8个相邻单元中的最小单元。运行此代码时,最小的代码将移至该代码,然后再次在循环中运行

是一个很好的开始方式,但对停止却一言不发。

您是否关心当前单元格的价值?如果是这样,您需要检查9而不是8。如果您只是想下山,则需要检查您去过的地方,否则任何平坦的多单元谷都会使您陷入无限循环。仅考虑向下移动。

如果您真的不在乎自己在哪里,那么即使您跳入或跳出单个细胞谷,也将使您陷入无限循环。在这种情况下,您将需要其他一些停止条件。考虑在imageX * imageY迭代后停止

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在二维数组中寻找最小的邻居

来自分类Dev

二维数组python中的邻居

来自分类Dev

在二维数组中查找邻居

来自分类Dev

获取二维数组中邻居的坐标

来自分类Dev

检查二维数组中每个邻居的最快方法

来自分类Dev

在Python中寻找二维数组的平均值

来自分类Dev

二维数组中从最大到最小的最长路径

来自分类Dev

在二维数组中查找有效的邻居索引

来自分类Dev

检查二维数组中已连接邻居的算法

来自分类Dev

直接在二维数组/网格中的值/节点旁边获取“邻居”

来自分类Dev

在二维numpy数组中获取邻居的有效方法

来自分类Dev

检查二维数组中已连接邻居的算法

来自分类Dev

二维字符数组中的邻居数不正确 (C)

来自分类Dev

二维数组的Numpy-get邻居矩阵

来自分类Dev

查找二维数组中指定坐标的邻居

来自分类Dev

在二维三维阵列中寻找“线索”

来自分类Dev

在二维阵列中寻找鞍点的算法

来自分类Dev

C中的二维数组错误

来自分类Dev

在C中返回二维数组?

来自分类Dev

从Java中的二维数组流

来自分类Dev

Perl中的二维数组访问

来自分类Dev

在Java中声明二维数组

来自分类Dev

二维数组中的元素总数

来自分类Dev

显示二维数组中的信息

来自分类Dev

在Perl中合并二维数组

来自分类Dev

指向二维数组中的整行

来自分类Dev

Haskell中的二维数组处理

来自分类Dev

二维数组中的长度

来自分类Dev

Kotlin中的二维Int数组