uva 784 - Maze Exploration

简介: 点击打开链接 题目意思:给定一个房间,房间四周都是封闭的,但是房间里面会有相通的门,开始里面有个点要求从这个点开始能够填到的地方全部标记为#,包括自己,输出填充后的房间地图 解题思路:简单的floodfill思路,利用dfs就可以做,从起...

点击打开链接


题目意思:给定一个房间,房间四周都是封闭的,但是房间里面会有相通的门,开始里面有个点要求从这个点开始能够填到的地方全部标记为#,包括自己,输出填充后的房间地图


解题思路:简单的floodfill思路,利用dfs就可以做,从起点开始递归搜索,注意输入的格式


代码:


#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 100;
//结构体存储坐标
struct point{
    int x;
    int y;
};
point p;
        
int n , r , c;
char maze[MAXN][MAXN];//存储房间的数组
int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};

//处理函数
void Dfs(int i , int j){
    for(int k = 0 ; k < 4 ;k++){
        if(maze[i+dir[k][0]][j+dir[k][1]] == 'X')
            continue;
        if(maze[i+dir[k][0]][j+dir[k][1]] == ' '){
            maze[i][j] = '#';//填充
            Dfs(i+dir[k][0] , j+dir[k][1]);
        }
    }
    maze[i][j] = '#';
}

//输出函数
void output(){
    int i , j , len;
    for(i = 0 ; i <= r ; i++){
        len = strlen(maze[i]);
        for(j = 0 ; j < len ; j++)
            printf("%c" , maze[i][j]);
        cout<<endl;
    }
}

//主函数
int main(){
    int i , j , mark;
    i = 0 ; 
    cin>>n;
    getchar();
    for(int t = 1 ; t <= n ; t++){
        i = 0;mark = 0;//mark标记是否找到了起始点
        while(gets(maze[i])){//用gets输入一串字符串
            if(maze[i][0] == '_')
                break;
            else{
                if(mark == 0){
                    int len = strlen(maze[i]);
                    for(j = 0 ; j < len ; j++){
                        if(maze[i][j] == '*'){
                            p.x = i;//存储起始点的坐标
                            p.y = j;
                            mark = 1;
                        }
                    }
                }
                i++;
            }
        }
        r = i ;//记录行数
        Dfs(p.x , p.y);
        output();
    }
}





目录
相关文章
|
人工智能 算法 数据挖掘
未来之光:量子操作系统的探索之旅
【6月更文挑战第3天】在数字世界的无限可能中,量子操作系统如同一道曙光,预示着计算领域的革命性变革。本文将带领读者穿梭于传统与创新之间,揭开量子操作系统的神秘面纱,探讨其背后的原理、面临的挑战以及未来的应用前景。
|
机器学习/深度学习 数据采集 人工智能
利用深度学习优化图像识别处理流程
【5月更文挑战第30天】 在现代科技快速发展的背景下,图像识别技术已经广泛应用于各个领域。深度学习作为人工智能领域的重要分支,为图像识别提供了强大的支持。本文主要探讨如何利用深度学习优化图像识别处理流程,提高图像识别的准确性和效率。首先,我们将介绍深度学习在图像识别中的应用原理;其次,分析当前图像识别面临的问题和挑战;最后,提出一种基于深度学习的图像识别优化方案,并进行实验验证。
|
域名解析 弹性计算 安全
手把手使用阿里云服务器搭建网站教程
手把手使用阿里云服务器搭建网站教程,使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程:
813 0
|
弹性计算 安全 Linux
阿里云服务器
阿里云服务器很高兴在这里发表一篇文章来跟大家分享我最近使用ECS的体验感受。我是河南理工大学电子信息专业的一名学生,由于最近所学习的内容的需要,我需要拥有一台稳定安全的服务器。通过了解,我选择了阿里云服务器ECS。这款服务器既好用又强悍,强悍之处在于,它可以让我随时随地的控制着服务器上的电脑。并且我将自己开发的系统部署在这个云服务器上,然后我可以在任何地方、任何时候只需通过访问云服务器所设置网址来访问我开发的系统,非常的方便。
268 0
阿里云服务器
|
数据安全/隐私保护
【密码学】Padding模式
在对于数据进行加密的时候,某些加密算法需要明文满足某些长度的要求,比如DES和AES等分组加密需要明文满足是分组的倍数,但是大多数情况下,明文恰好满足需求的概率是非常低的,在之前的实现中,我的实现均没有考虑不满足加密长度的情况,也就是我自己保证了我传入的内容就是满足需求的,本文将聊一聊在不满足的情况下如何进行「Padding」。
【密码学】Padding模式
|
数据可视化 数据挖掘 大数据
数据分析哪家强?Quick BI超强技能大盘点,看看是否有你需要的~
2021年转眼即过,在这一年时间里,Quick BI完成了6个大版本发布,39个小版本迭代,通过功能侧的重磅升级,来满足不同企业在不同场景下的数据消费需求。一起来看看Quick BI都有哪些新功能和大家见面吧!
数据分析哪家强?Quick BI超强技能大盘点,看看是否有你需要的~
LocalDateTime API 整理
最近开发时遇到日期api查了半天这次做个笔记
4317 0