
4个回答
展开全部
这是我算法课中期作业的时候写的一个Java迷宫。
基于Swing的,代码不多,还是挺简单的。连算法说明我都写成文档了,发到我的javaeye博客了。
网址如下:http://zpsailor.javaeye.com/blog/651141
希望对你有所帮助。
基于Swing的,代码不多,还是挺简单的。连算法说明我都写成文档了,发到我的javaeye博客了。
网址如下:http://zpsailor.javaeye.com/blog/651141
希望对你有所帮助。
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
739227481+
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是用递归解的,只是方法
public class Maze
{
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},//这只是一个示例的迷宫,0代表死路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))
{
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); // l左
}
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;
}
}
下面的类调用上面的
public class MazeSearch
{
public static void main (String[] args)
{
Maze labyrinth = new Maze();
System.out.println (labyrinth);
if (labyrinth.traverse (0, 0))
System.out.println ("The maze was successfully traversed!");
else
System.out.println ("There is no possible path.");
System.out.println (labyrinth);
}
}
public class Maze
{
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},//这只是一个示例的迷宫,0代表死路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))
{
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); // l左
}
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;
}
}
下面的类调用上面的
public class MazeSearch
{
public static void main (String[] args)
{
Maze labyrinth = new Maze();
System.out.println (labyrinth);
if (labyrinth.traverse (0, 0))
System.out.println ("The maze was successfully traversed!");
else
System.out.println ("There is no possible path.");
System.out.println (labyrinth);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询