`
runfeel
  • 浏览: 935887 次
文章分类
社区版块
存档分类
最新评论

uva 784 Maze Exploration 染色 搜索水题 DFS

 
阅读更多

染色问题,其实就是看看图上某一点能扩散多少。

用DFS解决,因为BFS不是很熟 =-=。。。以后要多练。

提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好。。。

代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
char maze[31][81];

void dfs(int x, int y) {
	maze[x][y] = '#';
	if (maze[x - 1][y] == ' ')
		dfs(x - 1, y);
	if (maze[x][y - 1] == ' ')
		dfs(x, y - 1);
	if (maze[x + 1][y] == ' ')
		dfs(x + 1, y);
	if (maze[x][y + 1] == ' ')
		dfs(x, y + 1);
}


int main() {
	int n;
//	freopen("in", "r", stdin);
	scanf("%d", &n);
	gets(maze[0]);
	while (n--) {
		int i = 0;
		while (gets(maze[i]) && maze[i][0] != '_') {
			i++;
		}//input
		bool flag = true;
		for (int k = 0; k < i; k++)
			for (int j = 0; flag && j < strlen(maze[k]); j++)
				if (maze[k][j] == '*') {
					maze[k][j] = '#';
					dfs(k, j);
//					printf("%d %d\n", k, j);
					flag = false;
				}
//		printf("%d %d\n", i, flag);
		for (int k = 0; k <= i; k++)
			puts(maze[k]);
	}//while
}




分享到:
评论

相关推荐

    maze dfs.rar_dfs maze_dfs.zip_maze_maze DFS_mazedfs.zip

    深度优先搜索(DFS,Depth-First Search)是一种用于遍历或搜索树或图的算法,其基本思想是尽可能深地探索图的分支。在解决迷宫问题时,DFS被广泛应用于寻找从起点到终点的可行路径。迷宫可以被视为一个二维网格,...

    uva705-Slash-Maze-.rar_Slash_uva705

    【标题】"uva705-Slash-Maze-.rar_Slash_uva705" 指向的是一个在UVa Online Judge (UVa OJ) 上提交并通过的编程问题,具体为问题编号705,名为"Slash Maze"。这个压缩包很可能包含了该问题的解决方案源代码。 ...

    maze的DFS算法.txt

    好的资源代码,分享给大家。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    maze的源代码

    【maze的源代码】是一个关于迷宫生成与解决算法的编程项目,可能包含了多种实现方式,如深度优先搜索(DFS)、广度优先搜索(BFS)或者A*搜索算法等。这些算法通常用于游戏开发、路径规划等领域,具有很高的实用价值...

    迷宫问题的DFS实现

    本主题主要关注深度优先搜索(DFS,Depth-First Search)在解决此类问题中的应用。DFS是一种用于遍历或搜索树或图的算法,它沿着树的深度方向尽可能深地搜索,直到找到目标节点或者回溯到没有未访问过的节点为止。 ...

    2019第十届蓝桥杯省赛真题 试题 E: 迷宫 配套资源 maze.txt

    2019第十届蓝桥杯省赛真题 试题 E: 迷宫 配套资源 maze.txt

    maze系统源代码

    【maze系统】是一种基于C++编程语言开发的软件系统,主要功能是实现迷宫路径的自动搜索以及自动化攻击等操作。在计算机科学中,解决迷宫问题通常涉及到图论、算法设计与分析等多个领域的知识。这里我们将深入探讨该...

    maze迷宫cpp报告.rar

    【描述】中提到的问题是一个典型的图遍历问题,可以采用深度优先搜索(DFS)或广度优先搜索(BFS)策略来解决。0和1构成的二维数组可以视作一个有向图,其中0代表可行走的边,1代表不可行走的边。迷宫的入口和出口是...

    maze.c

    在本文中,我们将深入探讨“maze.c”这个程序中所采用的两种主要搜索算法:广度优先搜索(BFS)和深度优先搜索(DFS),以及它们在解决迷宫问题中的应用。 首先,我们来看广度优先搜索。BFS是一种用于遍历或搜索树...

    C++课后题迷宫游戏Maze免费源码

    题目为慕课网C++课后题迷宫游戏Maze。题目链接:https://www.imooc.com/video/8207。 代码为本人原创,配合文章《慕课网C++课后题迷宫游戏Maze》。 链接:...

    MazeⅡ(迷宫小游戏)C语言实现

    1. 随机生成:通常采用深度优先搜索(DFS)或广度优先搜索(BFS)来随机生成迷宫。在这个项目中,我们可能使用了DFS,因为其生成的迷宫结构更加复杂,路径更难找到。DFS会从一个起点开始,随机选择一个未访问的相邻...

    matlab开发-Maze

    1. **迷宫生成**:迷宫生成通常涉及随机算法,如深度优先搜索(DFS)或Prim算法。这些算法能够创建复杂且无死胡同的路径结构。在MATLAB中,我们可以使用二维数组来表示迷宫,其中0代表墙壁,1代表可通行路径。 2. *...

    迷宫(MAZE)c语言+源码

    《迷宫(MAZE)C语言实现与源码解析》 迷宫问题一直是计算机科学中的经典问题,它涉及到了算法设计、数据结构以及图形界面等多个领域。本文将深入探讨一个基于C语言实现的迷宫程序,它包含了两种不同的迷宫生成方法...

    matlab开发-Maze3D

    迷宫生成通常采用深度优先搜索(DFS)或Prim's算法,这两种方法都可以在3D环境中构建复杂的结构。DFS通过随机选择一个未探索的相邻区域来扩展迷宫,而Prim's算法则从一个起始点出发,逐步添加边来构造连通的迷宫。 在...

    MAZE是一种网络协议,其核心就是通过网络从别人的电脑里下载文件。本代码实现了Maze这一功能。

    7. **用户接口**:虽然核心代码实现Maze协议的功能,但实际应用通常还需要一个用户界面,让用户能够浏览、搜索和下载文件。 ** Maze协议的应用场景及优势 ** Maze协议特别适用于大文件的分发,例如软件更新、高清...

    生成迷宫 Maze.abc

    总结来说,"Maze.abc"可能是一个实现迷宫生成的源码工具,利用DFS或Prim算法创建连通的迷宫,并可能包含可视化和路径搜索功能。通过学习和理解这个工具,我们可以掌握迷宫生成的基本原理,以及如何用编程语言实现这...

    迷宫问题 maze 迷宫算法的实现

    1. **深度优先搜索(DFS, Depth-First Search)**:DFS是一种递归策略,它沿着路径一直走下去,直到无法继续为止,然后回溯到最近的未访问节点,再尝试其他路径。在迷宫问题中,DFS通过使用栈来存储当前路径。当到达...

    天网Maze简体中文绿色版

    《天网Maze简体中文绿色版》是一款集学习、娱乐、资讯和沟通功能于一体的综合性软件,特别适合校园网络环境使用。它旨在为学生和教师提供一个便捷、全面的网络平台,促进教育信息化的发展,同时也为校园文化建设注入...

    java 走迷宫 maze

    2. **深度优先遍历法**(Depth-First Search, DFS):DFS是一种图遍历算法,适用于生成连通性良好的迷宫。从起点开始,遍历所有可能的路径,直到没有可走的路径,然后回溯。在迷宫生成中,我们通常使用非递归的DFS,...

    maze

    在IT行业中,"maze"可能指的是迷宫算法或者与之相关的编程挑战。迷宫问题是一个经典的数据结构和算法问题,通常涉及到路径寻找、图遍历等概念。在本场景下,由于标签为“字体”,我们可以推测这可能是一个关于字体...

Global site tag (gtag.js) - Google Analytics