Java --- 走迷宫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java --- 走迷宫相关的知识,希望对你有一定的参考价值。

走迷宫需要考虑大量的实验和错误:沿着一条路径走,当不能再向前走时回溯,然后尝试另一条以前没尝试过的选择。可是使用递归算法。

//**********************************************************
// MaseSearch.java
//**********************************************************
public class MaseSearch 
{
	public static void main(String[] args)
	{
		Mase labyrinth = new Mase();
		
		System.out.println(labyrinth);
		
		if(labyrinth.traverse(0,0))
			System.out.println("The Mase was successfully traversed!");
		else
			System.out.println("There is no possble path");
		
		System.out.println(labyrinth);
	}
}

//**********************************************************
// Mase.java
//**********************************************************
public class Mase {
	private final int TRIED = 3;
	private final int PATH = 7;
	
	private int[][] grid={{1,1,1,0,1,1,0,0,0,1,1,1,1},
			              {1,0,1,1,1,0,1,1,1,1,0,0,1},
			              {0,0,0,0,1,0,1,0,1,0,1,0,0},
			              {1,1,1,0,1,1,1,0,1,0,1,1,1},
			              {1,0,1,0,0,0,0,1,1,1,0,0,1},
			              {1,0,1,1,1,1,1,1,0,1,1,1,1},
			              {1,0,0,0,0,0,0,0,0,0,0,0,0},
			              {1,1,1,1,1,1,1,1,1,1,1,1,1}};
	
	public boolean traverse(int row,int column)
	{
		boolean done = false;
		
		if(valid(row,column))  // 判断是否为1 ,为1 则真
		{
			grid[row][column] = TRIED;
			
			if(row == grid.length-1 && column == grid[0].length-1)
				done = true;
			else
			{
				done = traverse(row+1,column);
				if(!done)
					done = traverse(row,column+1);
				if(!done)
					done = traverse(row-1,column);
				if(!done)
					done = traverse(row,column-1);
			}
			if(done)
				grid[row][column]=PATH;
		}
		return done;
	}
	
	private boolean valid(int row,int column)
	{
		boolean result = false;
		if(row>=0 && row<grid.length && column >= 0 && column < grid[row].length)
			if(grid[row][column] == 1)
				result = true;
		
		return result;
	}
	
	public String toString()
	{
		String result = "\n";
		for(int row = 0;row < grid.length;row++)
		{
			for(int column=0; column<grid[row].length;column++)
				result += grid[row][column] + " ";
				result += "\n";
		}
		return result;
	}
}

 

  

 

 

  

 

 

  

 

以上是关于Java --- 走迷宫的主要内容,如果未能解决你的问题,请参考以下文章

跟耿老师学Java:贪心算法与老鼠走迷宫

Java --- 走迷宫

Java与算法之 - 老鼠走迷宫(深度优先算法)

走迷宫问题(广度优先搜索) --- java实现

Java 老鼠走迷宫 汉诺塔

Java迷宫代码,深度优先遍历