граница сетки Java - PullRequest
       4

граница сетки Java

0 голосов
/ 03 декабря 2011

Проблема состоит в том, чтобы найти кратчайший путь в сетке от начальной точки до конечной точки. сетка представляет собой двумерный массив, заполненный нулями и единицами. 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();


}

1 Ответ

0 голосов
/ 03 декабря 2011

Я предполагаю, что самые левые и самые верхние индексы равны 0 в ваших массивах, поэтому просто убедитесь, что index-1> = 0, прежде чем индексировать в соответствующий массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...