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();
    }
}





目录
相关文章
UVa11679 - Sub-prime
UVa11679 - Sub-prime
54 0
CodeForces 377A-Maze(DFS找连通块)
CodeForces 377A-Maze(DFS找连通块)
CodeForces 377A-Maze(DFS找连通块)
洛谷P1825-[USACO11OPEN]Corn Maze S(BFS)
洛谷P1825-[USACO11OPEN]Corn Maze S(BFS)
洛谷P1825-[USACO11OPEN]Corn Maze S(BFS)
[HDU 4738] Caocao‘s Bridges | Tarjan 求割边
Problem Description Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn’t give up. Caocao’s army still was not good at water battles, so he came up with another idea. He built many islands in the Changjiang river,
141 0
|
算法 JavaScript
【UVA 10307 Killing Aliens in Borg Maze】最小生成树, kruscal, bfs
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20846 POJ 3026是同样的题,但是内存要求比较严格,并是没有过。
1356 0
[LeetCode] Dungeon Game
An interesting problem. The code is also short and clear. The basic idea is to use a 2d array dp[i][j] to denote the minimum hp that is required before entering dungeon[i][j].
738 0
|
人工智能 BI 算法
|
定位技术
codeforces 377A Maze
点击打开cf377A 题意:给定一个n*m的地图,这个地图初始化有s个空地,并且这s个空地是连通的。现在要求找到一种方案放k个的墙到这个地图使得剩下的s-k个点还是连通的 思路:因为初始化的地图是一个连通的,要求s-k个点也是连通的。
1022 0
zoj 1586 prim
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=586 #include &lt;cstdio&gt; #include &lt;cstring&gt; #define MAX 1000000 int Edge[1010][1010]; int adapter[1010]; int lowcost[1010]
978 0