`
shenjun134
  • 浏览: 16991 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

迷宫算法实现

    博客分类:
  • java
 
阅读更多
定义一个二维数组:

int maze[5][5] = {
0, 1, 0, 0, 0, 
0, 1, 0, 1, 0, 
0, 0, 0, 0, 0, 
0, 1, 1, 1, 0, 
0, 0, 0, 1, 0, 
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
package com.acm;

import java.util.Stack;

public class Maze {

	private static Stack<String> STACK = new Stack<String>();

	private static int MAZE[][] = { { 0, 1, 0, 0, 0 }, { 0, 1, 0, 1, 0 },
			{ 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 1, 0 } };

	public static void generate() {
		int row = 0;
		int erect = 0;
		int size = MAZE.length;
		// !(row == size && erect == size)
		while (row != size - 1 || erect != size - 1) {
			int now_row = row;
			int now_erect = erect;
			if (row + 1 < size && MAZE[row + 1][erect] == 0) {
				row++;
			} else if (erect + 1 < size && MAZE[row][erect + 1] == 0) {
				erect++;
			} else if (row - 1 >= 0 && MAZE[row - 1][erect] == 0) {
				row--;
			} else if (erect - 1 >= 0 && MAZE[row][erect - 1] == 0) {
				erect--;
			} else {
				MAZE[now_row][now_erect] = 3;// DEAD
				if (STACK.empty()) {
					System.out.println("No resolution");
					return;
				}
				String pop = STACK.pop();
				String[] key = generateValue(pop);
				row = Integer.valueOf(key[0]);
				erect = Integer.valueOf(key[1]);
				continue;
			}
			STACK.push(generateKey(now_row, now_erect));
			MAZE[now_row][now_erect] = 2;
		}
		if (row == size - 1 && erect == size - 1) {
			STACK.push(generateKey(row, erect));
		}
		print();
	}

	public static void print() {
		for (String str : STACK) {
			System.out.println(str);
		}
	}

	public static String generateKey(int i, int j) {
		return "[" + i + "," + j + "]";
	}

	public static String[] generateValue(String key) {
		return key.replace("[", "").replace("]", "").split(",");
	}

	public static void main(String[] args) {
		generate();
	}
}

分享到:
评论

相关推荐

    迷宫算法实现程序

    这个程序“迷宫算法实现”很可能是一个用于解决如何从起点找到终点的迷宫导航系统。下面将详细介绍迷宫算法及其实现。 迷宫算法通常基于两种主要类型:深度优先搜索(DFS)和广度优先搜索(BFS)。DFS倾向于探索一...

    迷宫算法实现(C++)

    本篇文章将深入探讨如何用C++实现迷宫算法,并将其应用于数据结构的学习。 首先,我们需要理解迷宫的基本结构。一个迷宫通常由一个二维矩阵表示,其中0代表可以通过的路径,1代表墙壁或障碍物。我们的目标是找到从...

    数据结构课程设计迷宫算法的实现_JAVA.doc

    递归算法是一种常用的迷宫算法实现方法,其原理是通过递归函数来搜索迷宫中的路径。递归算法的优点是实现简单、易于理解,但其缺点是可能会出现栈溢出问题。 三、使用栈作为辅助结构 使用栈作为辅助结构的迷宫算法...

    c语言实现的迷宫算法

    本文将详细解析用C语言实现的迷宫算法,通过深入理解其核心思想,帮助读者掌握此类算法的基本原理和实现技巧。 首先,我们要了解迷宫算法的基本概念。迷宫可以被抽象为一个二维网格,其中每个节点代表一个位置,...

    迷宫算法C++的两种不同实现

    这里我们将详细探讨两种不同的迷宫算法实现。 1. **深度优先搜索(DFS,Depth-First Search)** 深度优先搜索是一种递归的遍历方法,适用于有向或无向图。在迷宫问题中,DFS会沿着一个方向深入到死胡同,然后回溯...

    迷宫算法迷宫算法

    迷宫算法是计算机科学中的一种路径寻找问题,它在游戏设计、图形学、人工智能和算法竞赛等领域有着广泛的应用。在解决迷宫问题时,我们通常需要设计或选择一种算法来帮助“虚拟角色”或者程序从起点找到终点。下面将...

    迷宫算法的实现及其代码 用栈的思想

    本文将深入探讨迷宫算法的实现,特别是使用栈这种数据结构来解决这类问题。我们将讨论迷宫的设置、方向选择、绝境与墙的判断,以及如何通过编程实现这些概念。 首先,迷宫的设置通常涉及创建一个二维矩阵来表示迷宫...

    VC/c++平台队列实现迷宫算法

    本主题将深入探讨如何在VC/C++环境中利用队列数据结构来实现迷宫算法。队列是一种先进先出(FIFO)的数据结构,非常适合解决这类问题。 首先,我们需要理解迷宫的基本构造。一个迷宫可以表示为一个二维网格,其中每...

    优化的迷宫算法

    在“maze”这个压缩包中,可能包含了实现优化迷宫算法的源代码。通过分析这些代码,我们可以深入理解优化的具体细节,例如使用的数据结构、搜索策略以及优化方法等。 五、应用与扩展 优化的迷宫算法不仅限于解决纯...

    C#实现4种经典迷宫生成算法和迷宫寻路算法

    `Debuger`可能是调试工具或包含调试信息的文件夹,而`AlgorithmLib`则可能是包含具体算法实现的类库项目。通过这些源码,我们可以深入了解每种算法的具体实现细节,学习如何在C#中高效地编写这些算法。对于学习和...

    基于SWING的可视化迷宫算法

    **三、迷宫算法实现** 1. **表示迷宫**: 迷宫可以使用二维数组表示,0代表可通行路径,1代表墙壁或障碍物。 2. **初始化**: 创建迷宫的可视化界面,使用SWING组件如JButton或JLabel表示迷宫中的每个单元格。 3. *...

    迷宫算法来自动生成迷宫

    迷宫算法是一种在计算机科学中常见的问题,主要应用于游戏开发、路径规划等领域。自动生成迷宫的算法有很多种,包括深度优先搜索(DFS)、广度优先...通过阅读和理解这些文件,我们可以深入学习和实践迷宫算法的实现。

    迷宫算法(Java)

    本文将深入探讨使用Java实现迷宫算法,特别是结合搜索回溯策略,并带有方向倾向性。 首先,我们要理解迷宫问题的基本框架。迷宫通常可以表示为一个二维网格,每个单元格可能是开放路径(可以通过)或障碍(无法通过...

    C#实现迷宫算法(使用堆栈)

    在本文中,我们将深入探讨如何使用C#编程语言实现迷宫算法,并重点讲解利用堆栈数据结构来解决这一问题。迷宫算法是一个经典的路径搜索问题,通常用于游戏开发、路径规划和其他需要找到从起点到终点最短路径的应用...

    迷宫算法的实现程序1

    使用C++实现迷宫路线的解法。使用了“类”。

    迷宫算法的C语言实现源代码

    迷宫算法的c语言实现,数据结构中关于栈的应用。

    数据结构 迷宫算法

    迷宫算法是数据结构应用的一个有趣实例,通常用于解决路径寻找问题。在这个实验中,我们将利用栈这一数据结构来解决迷宫问题。 栈是一种线性数据结构,遵循“后进先出”(LIFO)原则,类似于日常生活中的堆叠物品。...

    VC 解析迷宫算法的一个例子源代码.rar

    这个源码实例主要位于压缩包内的"Maze"目录下,同时也包含其他相关程序源码,帮助读者全面理解迷宫算法的实现过程。 迷宫算法的核心在于如何生成和解决复杂路径问题。在VC++环境下,开发者通常会选择一种或多种经典...

    数据结构 迷宫算法的详细实现

    在本项目中,我们探讨的是基于严蔚敏教授的经典教材《数据结构》中的一种迷宫算法的实现。迷宫算法通常用于解决路径寻找问题,如在复杂的网格环境中找到从起点到终点的最短路径。在这个程序中,我们将重点讨论如何...

Global site tag (gtag.js) - Google Analytics