迷宫问题
int map[][] = new int[8][7];
for(int i = 0; i < 7; i++){
map[0][i] = 1;
map[7][i] = 1;
}
for (int i = 0; i < 8; i++) {
map[i][0] = 1;
map[i][6] = 1;
}
map[3][2] = 1;
map[3][1] = 1;
//以上是创建一个迷宫1表示障碍物。
T t = new T();
t.findWay(map, 1,1);
System.out.println("======找路情况======");
for (int i = 0; i < map.length; i++) {
for(int j = 0; j < map[i].length; j++){
System.out.print(map[i][j]+" ");
}
System.out.println();
}
}
}
class T{
public boolean findWay(int map[][], int i, int j){
// 0表示没有走过,2表示可以走通,3表示走过但是没有走通
if(map[6][5] == 2){
return true;
}
else{
if(map[i][j] == 0){
map[i][j] = 2;
// 按照 下右上左 查找
if(findWay(map, i+1,j)){
return true;
}
else if(findWay(map, i, j+1)){
return true;
}
else if(findWay(map, i-1,j)){
return true;
}
else if(findWay(map,i,j-1)){
return true;
}
else{
map[i][j] = 3;
return false;
}
}
else{
return false;
}
}
}
}
汉诺塔
Tower t = new Tower();
t.move(1,'A','B','C');
}
}
class Tower{
public void move(int num,char a,char b, char c){
if(num == 1){
System.out.println(a+"->"+c);
}
else{
move(num - 1, a, c, b);// 先借助b塔
System.out.println(a+"->"+b);
move(num - 1,a,b,c); // 然后从b塔移到c塔
System.out.println(b+"->"+c);
}
}
}
文章介绍了使用Java编程解决迷宫问题(寻找从起点到终点的路径)和汉诺塔问题(递归移动塔盘)。代码展示了如何在二维数组表示的迷宫中进行路径搜索,并在Tower类中实现了汉诺塔的递归移动逻辑。
1920

被折叠的 条评论
为什么被折叠?



