我想查找棋盤上左上角和右下角單元格之間的路徑數量。我只能移動到相鄰的右邊和相鄰的底部細胞。這樣我可以有最多2個不相交的簡單路徑。我正在使用遞歸方法。查找網格中的路徑故障
private void processMatrix()
{
if(matrix[0][0]!=1 || matrix[0][0]!=matrix[ROWS-1][COLUMNS-1])
System.out.println("No Path Exists between bottom right and top left cells");
int row=0;
int col=0;
traverse(row,col);
}
private boolean traverse(int row, int col)
{
path.add(new Point(row,col));
if(row+1<ROWS)
{
if(matrix[row+1][col]==0)
{
return false;
}
if(matrix[row+1][col]==1)
{
traverse(row+1,col);
}
}
if(col+1<COLUMNS)
{
if(matrix[row][col+1]==0)
{
return false;
}
if(matrix[row][col+1]==1)
{
traverse(row,col+1);
}
}
if(col==COLUMNS-1 && row==ROWS-1)
return true;
return false;
}
但是用這段代碼我只能遍歷下三角矩陣。當我逆轉遍歷()函數中塊的順序時,我只能遍歷上三角矩陣中的路徑。無法弄清楚什麼是錯的。我也想檢測相交的路徑。請幫忙。
編輯: 該矩陣由0和1組成。 如果通過僅包含1的相鄰單元連接,則存在路徑。換句話說,路徑將是1的鏈。