2011-12-03 101 views
0

問題是從起點到終點找到網格上的最短路徑。網格是一個二維數組,填充0和1。 1是路徑。我有一個方法來檢查給定座標的鄰居,看它是否是一條路徑。我遇到的問題是網格的邊界。可以使用數組長度和列長度來檢查右邊界和底部邊界。但是,我將如何檢查以確保我不試圖檢查網格左側或網格上方的點?java網格邊界

這是我的方法

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(); 


} 

回答

0

我認爲最左邊最上面和指標都在你的陣列0,所以只要確保索引1> = 0索引到相應的陣列之前。