Java老鼠简单迷宫

迷宫专用findway方法

*    *    *    *    *    *    *    *

*                                     *

*           *                         *

*    *    *                          *

*                                     *

*                                     *

*                                     *

*    *    *    *    *    *    *    *

public class miGong { 
	//编写一个main方法
	public static void main(String[] args) {
    int[][] map = new int[8][7];
    for (int i = 0;i < 8 ;i++ ) {
    	map[i][0] = 1;
    	map[i][6] = 1;
    }
    for (int j = 0;j < 7 ;j++ ) {
        map[0][j] = 1;
        map[7][j] = 1;		
    }
    map[3][1] = 1;
    map[3][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();
    }
    //使用dindWay给老鼠找路
    AA t1 = new AA();
    t1.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 AA {
	//使用递归,回溯的思想解决老鼠出迷宫
	//1.findWay方法就是专门来找出迷宫的路径
	//2.如果找到就返回ture 否则就返回false
	//3.map  是二维数组,用来表示迷宫
	//4.i j 用来表示老鼠的位置,初始位置为{1 , 1}
	//5.用递归来找路 ,所以先规定不同数的含义
	//  0表示未走但可以走的路  1表示障碍物  2表示已走并且可以走的路 3表示已走但走不通的路
	public boolean findWay(int map[][] ,int i ,int j) { //findWay是专门用来找迷宫的方法
		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;
	      }

		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值