【发布时间】:2013-11-24 19:43:50
【问题描述】:
我正在尝试查找棋盘上左上角和右下角单元格之间的路径数。我只能移动到相邻的右侧和相邻的底部单元格。这样我最多可以有 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;
}
但是使用此代码,我只能遍历下三角矩阵。当我在 traverse() 函数中反转 if 块的顺序时,我只能遍历上三角矩阵中的路径。无法弄清楚出了什么问题。我也想检测相交的路径。请帮忙。
编辑: 矩阵由 0 和 1 组成。 如果路径由仅包含 1 的相邻单元连接,则存在路径。换句话说,路径将是一串 1。
【问题讨论】:
标签: java algorithm graph path grid