递归地找到二维矩阵中的元素

暗影

我试图在矩阵中递归地找到一个数字。

public class Test2 {
static char arry [][] = {{'#','#','#'},
                         {'#',' ',' '},
                         {'#',' ','#'},
                         {'#',' ','1'},
};

public static void main(String args []){
    recursion(2,1);

}

private static void recursion(int row, int col) {
    if(arry[row][col]=='1' && isInBound(row,col)==true){
        System.out.println("Found at " + row + " " + col);
    }else if ((isInBound(row,col)==true)&& arry[row][col]==' '){
        recursion(row,col+1);
        recursion(row,col-1);
        recursion(row-1,col);
        recursion(row+1,col);

    }

}

private static boolean isInBound(int row, int col) {
    boolean bol = false;
    if(row<= arry.length && col <= arry[0].length){
        bol = true;
    }

    return bol;
}

}

我正在尝试使程序能够从任何位置开始。例如,我从该程序的2,1位置开始。我遇到了异常。使用try catch循环时,该代码有时可用于某些输入。除非绝对必要,否则我不想使用try catch。我也在尝试在矩阵的所有4个方向上寻找。那就是我的问题开始的地方,我越界越厉害。

Gee858eeG

这有效:

public class Test2 {
    static char arry[][] = { { '#', '#', '#' }, { '#', ' ', ' ' },
            { '#', ' ', '#' }, { '#', ' ', '1' }, };
    static boolean[][] visited = new boolean[arry.length][arry[0].length];

    public static void main(String args[]) {
        // fill visited array
        for (int i = 0; i < visited.length; i++) {
            for (int j = 0; j < visited[0].length; j++) {
                visited[i][j] = false;
            }
        }

        recursion(2, 1);

    }

    private static void recursion(int row, int col) {
        if (!isInBound(row, col) || visited[row][col])
            return;
        visited[row][col] = true;

        if (arry[row][col] == '1') {
            System.out.println("Found at " + row + " " + col);
            return;
        } else if (arry[row][col] == ' ') {
            recursion(row, col + 1);
            recursion(row - 1, col);
            recursion(row + 1, col);
            recursion(row, col - 1);

        }

    }

    private static boolean isInBound(int row, int col) {
        boolean bol = false;
        if (row < arry.length && col < arry[0].length && col >= 0 && row >= 0) {
            bol = true;
        }

        return bol;
    }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归地找到二维矩阵中的元素

来自分类Dev

检查二维矩阵中的每个元素

来自分类Dev

快速找到二维数组中的最大元素

来自分类Dev

二维if / then矩阵

来自分类Dev

在numpy中组合二维矩阵

来自分类Dev

libgdx中的二维矩阵

来自分类Dev

在numpy中组合二维矩阵

来自分类Dev

在java中打印二维矩阵

来自分类Dev

面试:使用递归在二维矩阵中的最大路径总和。恢复路径

来自分类Dev

用R中列表中的行有效地填充二维矩阵

来自分类Dev

用Java递归填充矩阵(二维数组)

来自分类Dev

二维数组中的元素总数

来自分类Dev

从二维数组中检索元素

来自分类Dev

二维数组中的元素丢失?

来自分类Dev

置换二维数组中的元素

来自分类Dev

python二维递归

来自分类Dev

如何在underscore.js中找到二维数组中的元素?

来自分类Dev

如何在二维哈希中找到元素的索引

来自分类Dev

如何在二维数组中找到 indexOf 元素?

来自分类Dev

如何从n维矩阵中获得n维二维子矩阵?

来自分类Dev

二维矩阵中C中**和&**之间的差异

来自分类Dev

Matlab中的按行二维矩阵交集

来自分类Dev

R中的二维数组列表上的矩阵乘法

来自分类Dev

如何在Python中输入矩阵(二维列表)?

来自分类Dev

在Matlab中绘制二维矩阵的行

来自分类Dev

二维矩阵PYTHON中的最大和矩形

来自分类Dev

如何在Matlab中显示二维矩阵

来自分类Dev

将Webtable的内容存储在二维矩阵中

来自分类Dev

在Matlab中绘制二维矩阵的行