【问题标题】:java grid boundaryjava网格边界
【发布时间】:2011-12-03 04:35:07
【问题描述】:

问题是在网格上找到从起点到终点的最短路径。网格是一个用 0 和 1 填充的二维数组。 1 是路径。我有一种方法可以检查给定坐标的邻居,看看它是否是一条路径。我遇到的问题是网格的边界。可以使用数组长度和列的长度来检查右边界和下边界。但是我将如何检查以确保我不会尝试检查网格左侧或网格上方的点?

这是我的方法

public static void neighbors(coordinate current, int[][] grid, Queue q)
    {
    int row = current.getRow();
    int col = current.getCol();

    if(grid[row-1][col] == 1)
    {
        if(grid[row][col] == -1)
        {
            grid[row-1][col] = grid[row][col] + 2;
        }

        else
        {
            grid[row-1][col] = grid[row][col] + 1;
        }

        coordinate x = new coordinate(row-1,col);
        q.enqueue(x);
    }

    else if(grid[row+1][col] == 1)
    {
        if(grid[row][col] == -1)
        {
            grid[row+1][col] = grid[row][col] + 2;
        }

        else
        {
        grid[row+1][col] = grid[row][col] + 1;
        }

        coordinate x = new coordinate(row+1,col);
        q.enqueue(x);
    }

    else if(grid[row][col-1] == 1)
    {
        if(grid[row][col] == -1)
        {
            grid[row][col-1] = grid[row][col] + 2;
        }

        else
        {
            grid[row][col-1] = grid[row][col] + 1;
        }

        coordinate x = new coordinate(row, col - 1);
        q.enqueue(x);

    }

    else if(grid[row][col+1] == 1)
    {
        if(grid[row][col+1] == -1)
        {
            grid[row][col+1] = grid[row][col] + 1;
        }

        else
        {
            grid[row][col+1] = grid[row][col] + 1;
        }

        coordinate x = new coordinate(row, col + 1);
        q.enqueue(x);

    }

    else
    {

    }

    q.dequeue();


}

【问题讨论】:

    标签: java arrays grid


    【解决方案1】:

    我假设你的数组中最左边和最上面的索引都是 0,所以在索引到适当的数组之前确保 index-1 >= 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2021-11-20
      • 2012-06-08
      • 2017-12-16
      • 2015-02-28
      • 2023-03-16
      • 2012-12-16
      相关资源
      最近更新 更多