2011-12-03 11 views
0

問題は、グリッド上の最短パスを開始点から終了点まで見つけることです。グリッドは0と1の2次元配列です。 1はパスです。私は、与えられた座標の隣人をチェックしてそのパスがあるかどうかを調べるメソッドを持っています。私の持つ問題は、グリッドの境界にあります。右と下の境界線は、配列の長さと列の長さを使用してチェックすることができます。しかし、どのように私はグリッドの上またはグリッドの上にポイントthatsをチェックしようとしないことを確認するためにチェックするだろうか?Javaグリッド境界

は、これは私がこれだけ確認して、一番左と一番上のインデックスがあなたの配列に0をしていると仮定し、私の方法

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

でそのインデックス-1> = 0、適切な配列にインデックス付けする前に。