public class MiGong {
//编写一个main方法
public static void main(String[] args) {
//思路
//1.先创建迷宫, 用二维数组表示 int[][] map = new int[8][7];//8行 7列
//2.先规定 map 数组的元素值: 0 表示可以走 1表示障碍物
int[][] map = new int[8][7];//8行 7列
//3.将最上面的一行和最下面的一行 全部设置为1
for (int i = 0; i < 7; i++) {
map[0][i] = 1;
map[7][i] = 1;
}
//4.将最左面的一列和最右面的一列 全部设置为1
for (int i = 0; i < 8; i++) {
map[i][0] = 1;
map[i][6] = 1;
}
//5.单独设置障碍物
map[3][1] = 1;
map[3][2] = 1;
/*
map[2][1] = 1;
map[2][2] = 1;
map[1][2] = 1;
*/
map[2][2] = 1;//测试回溯
//输出当前的迷宫
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("");
}
//使用findWay给老鼠找路
T t1 = new T();
t1.findWay(map, 1, 1);
System.out.println("\n===找路的情况如下===");
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 {
//使用递归回溯的思想来解决老鼠出迷宫
//老师解读
//1. findWay方法就是专门来找 出迷宫的路径
//2. 如果找到, 就返回 true, 否则返回false
//3. map 就是二维数组, 即表示迷宫
//4. i, j 就是老鼠的位置, 初始化的位置为(1,1)
//5. 因为我们是递归地找路, 所以先规定好 map数组的各个值的含义
// 0表示可以走 1表示障碍物 2表示可以走 3表示走过, 但是走不通是死路
//6. 当map[6,5]= 2 就说明找到通路, 就可以结束, 否则就继续找.
//7. 先确定老鼠找路策略 下->右->上->左
public boolean findWay(int[][] map, int i, int j) {
if (map[6][5] == 2) {//说明已经找到
return true;
} else {
if (map[i][j] == 0) {//当前这个位置为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 {//map[i][j] = 1, 2, 3
return false;
}
}
}
//修改找路策略, 看看路径是否有变化
//下->右->上->左 ==> 上->右->下->左
public boolean findWay2(int[][] map, int i, int j) {
if (map[6][5] == 2) {//说明已经找到
return true;
} else {
if (map[i][j] == 0) {//当前这个位置为0, 说明可以走
//我们假定可以走通
map[i][j] = 2;
//使用找路策略, 来确定该位置是否真的可以走通
//上->右->下->左
if (findWay2(map, i - 1, j)) {//先尝试走上
return true;
} else if (findWay2(map, i, j + 1)) {//再尝试走右
return true;
} else if (findWay2(map, i + 1, j)) {//再尝试走下
return true;
} else if (findWay2(map, i, j - 1)) {//再尝试走左
return true;
} else {
map[i][j] = 3;
return false;
}
} else {//map[i][j] = 1, 2, 3
return false;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
第七章 面向对象编程(基础) 代码
共124个文件
class:74个
java:49个
json:1个
0 下载量 110 浏览量
2023-10-27
16:22:12
上传
评论
收藏 67KB RAR 举报
温馨提示
第七章 面向对象编程(基础) 代码
资源推荐
资源详情
资源评论
收起资源包目录
第七章 面向对象编程(基础) 代码 (124个子文件)
MoraGame.class 2KB
Person.class 2KB
Methods.class 1KB
Tom.class 1KB
T.class 1KB
MiGong.class 1KB
MethodExercise04.class 1KB
Homework02.class 1KB
Cat.class 1KB
Homework06.class 1KB
Homework04.class 1KB
Object01.class 988B
Homework01.class 968B
PropertiesDetail.class 963B
Music.class 903B
Book.class 896B
A.class 895B
ConstructorExercise.class 894B
This01.class 873B
Constructor01.class 856B
Dog.class 853B
MethodParameter02.class 838B
MethodDetail.class 824B
B.class 814B
Method01.class 803B
RecursionExercise01.class 799B
Cale.class 795B
RecursionExercise02.class 788B
PassObject.class 779B
Homework05.class 777B
EightQueens.class 774B
OverLoadExercise.class 773B
TestPerson.class 769B
Homework14.class 753B
MethodParameter01.class 736B
Recursion01.class 730B
AA.class 725B
Homework09.class 717B
Tower.class 716B
Demo.class 677B
MyCalculator.class 659B
VarParameterExercise.class 641B
Employee.class 625B
Object03.class 593B
MethodExercise01.class 561B
A02.class 547B
OverLoad01.class 522B
VarParameter01.class 499B
MyTools.class 485B
Homework12.class 468B
Homework11.class 467B
A01.class 436B
ConstructorDetail.class 435B
MethodExercise03.class 435B
Method02.class 419B
VarScopeDetail.class 416B
Hello.class 416B
Homework03.class 408B
Homework07.class 393B
Homework13.class 369B
VarParameterDetail.class 357B
MethodExercise02.class 343B
HanoiTower.class 335B
A03.class 329B
ZzwMethod.class 321B
MethodDetail02.class 320B
Circle.class 319B
ThisDetail.class 312B
Car.class 296B
Homework10.class 265B
VarScope.class 261B
Object02.class 261B
Test2.class 248B
Test.class 247B
MiGong.java 4KB
MoraGame.java 3KB
OverLoadExercise.java 2KB
EightQueens.java 2KB
Homework14.java 2KB
Method01.java 2KB
MethodDetail.java 2KB
Homework13.java 1KB
Homework02.java 1KB
ThisDetail.java 1KB
Homework06.java 1KB
VarScopeDetail.java 1KB
MethodParameter02.java 1KB
This01.java 1KB
RecursionExercise01.java 1KB
Homework12.java 1KB
VarParameter01.java 1KB
MethodExercise04.java 1KB
RecursionExercise02.java 1KB
Object01.java 1KB
VarScope.java 1KB
Homework01.java 1KB
ConstructorExercise.java 1KB
ConstructorDetail.java 971B
Homework04.java 926B
Homework09.java 888B
共 124 条
- 1
- 2
资源评论
~小团子
- 粉丝: 421
- 资源: 58
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功