Java 老鼠走迷宫 汉诺塔
Labyrinth
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | public class Labyrinth { public static void main(String[] args){ Map map= new Map(); map.init(); map.show(); Mouse mouse= new Mouse(); mouse.seek(map.map,1,1); map.show(); } } class Mouse{ // 0 可走, 1 不可走, 2 通路, 3 dead end public boolean seek( int [][] map, int i, int j){ if (map[6][5]==2){ // end point标记为通路,路径已找到 return true ; } else { if (map[i][j]==0){ // 找的路必须为0,不能为2,防止死循环 map[i][j]=2; if (seek(map,i+1,j)){ return true ; } else if (seek(map,i,j+1)){ return true ; } else if (seek(map,i-1,j)){ return true ; } else if (seek(map,i,j-1)){ return true ; } else { map[i][j]=3; return false ; } } else { // map[i][j]== 1, 2, 3 return false ; } } } } class Map{ private final int row=8; private final int column=7; protected int [][] map; public void init(){ map= new int [row][column]; // 第一列和第7列置1 for ( int i=0;i<row;++i){ map[i][0]=1; map[i][column-1]=1; } // 第一行和第8行置1 for ( int i=0;i<column;++i){ map[0][i]=1; map[row-1][i]=1; } map[3][1]=1; map[3][2]=1; } public void show(){ System. out .println( "current map:" ); for ( int i=0;i<row;++i){ for ( int j=0;j<column;++j){ System. out .print(map[i][j]+ " " ); } System. out .println(); } } } |
汉诺塔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Tower { public static void main(String[] args) { Hanoi hanoi = new Hanoi(); hanoi.move(5, 'A' , 'B' , 'C' ); } } class Hanoi { // num: 盘数,a:A塔,b:B塔,c:C塔 public void move( int num, char a, char b, char c) { if (num == 1) { // 只剩一个盘,出口 System. out .println(a + " => " + c); } else { // 将多个盘看为2个, 最下的一个, 和上面的所有(num-1) move(num - 1, a, c, b); // 借助c, 将上面的num-1移动到 b System. out .println(a + " => " + c); // 最下面的移到c move(num - 1, b, a, c); // 借助a, 把b塔的num-1个移到c } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律