该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public boolean isway(SquareData squareData[][], int a1, int b1, int a2,
int b2, Stack path) {
squareData[a1][b1].pathMark++;
path.push(squareData[a1][b1]);
if (a1 == a2 && b1 == b2) {
squareData[a2][b2].havefound = 1;
return true;
}
if (a1 - 1 >= 0
&& squareData[a1 - 1][b1].circle.getFill() == Color.WHITE
&& squareData[a1 - 1][b1].pathMark == 0) {
isway(squareData, a1 - 1, b1, a2, b2, path);
if (squareData[a2][b2].havefound == 1)
return true;
}
if (b1 + 1 <= 8
&& squareData[a1][b1 + 1].circle.getFill() == Color.WHITE
&& squareData[a1][b1 + 1].pathMark == 0) {
isway(squareData, a1, b1 + 1, a2, b2, path);
if (squareData[a2][b2].havefound == 1)
return true;
}
if (a1 + 1 <= 8
&& squareData[a1 + 1][b1].circle.getFill() == Color.WHITE
&& squareData[a1 + 1][b1].pathMark == 0) {
isway(squareData, a1 + 1, b1, a2, b2, path);
if (squareData[a2][b2].havefound == 1)
return true;
}
if (b1 - 1 >= 0
&& squareData[a1][b1 - 1].circle.getFill() == Color.WHITE
&& squareData[a1][b1 - 1].pathMark == 0) {
isway(squareData, a1, b1 - 1, a2, b2, path);
if (squareData[a2][b2].havefound == 1)
return true;
}
path.pop();
return false;
}
squareData[a1][b1 - 1].circle.getFill() == Color.WHITE 这句话就是不能通过的意思
&& squareData[a1][b1 - 1].pathMark == 0 这句是还未走过 , 走过后标记为1
path是记录路劲的栈
现在的路径不是最短的 , 求修改为最短路径的方法啊