10*10的地图上有若干墙(标志1),寻找一条从起点到终点的路径。
package sjjg;
public class mazeProblem {
public static void main(String[] args) {
int[][] map = new int[10][10];
//没走过0,墙1,走过但不通3,正在走但不一定正确
for (int i = 0; i < 10; i++) {
map[0][i] = 1;
map[9][i] = 1;
}
for (int i = 0; i < 10; i++) {
map[i][0] = 1;
map[i][9] = 1;
}
map[3][1] = 1;
map[3][2] = 1;
map[5][7] = 1;
map[5][8] = 1;
map[5][6] = 1;
searchExit(map, 1, 1);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.printf("%d ", map[i][j]);
}
System.out.println();
}
}
public static boolean searchExit(int[][] map, int i, int j) {//判断某点是否能走通
if (map[8][8] == 2) {
return true;
} else {
if (map[i][j] == 0) {//该点没走过,可以走
map[i][j] = 2;//假设该点能够走通,但是不一定
//定制优先策略,这里选择的顺序为右下左上
if (searchExit(map, i, j + 1)) {
return true;
} else if (searchExit(map, i + 1, j)) {
return true;
} else if (searchExit(map, i , j-1)) {
return true;
} else if (searchExit(map, i-1, j )) {
return true;
} else {
map[i][j] = 3;
return false;
}
} else {
return false;
}
}
}
}
e.g.