码迷,mamicode.com
首页 > 其他好文 > 详细

DFS之草坪找人

时间:2020-03-11 15:04:19      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:mic   探索   %s   oid   com   clu   pre   ring   div   

技术图片

 

 技术图片

 

 

#include<cstdio>
#include<string>
using namespace std;
int n,m,cnt; //分别为地图规模,和需要多少人 
char map[105][105]; //存储地图值 
bool vis[105][105]; //存储是否走过 
void dfs(int x,int y){
    if(x<0||x>=n||y<0||y>=m||map[x][y]==.||vis[x][y]){
        return;
    }//边界判断,递归的出口 
    vis[x][y]=true;//满足条件可以走,标记1 
    dfs(x+1,y);
    dfs(x-1,y);
    dfs(x,y+1);
    dfs(x,y-1);
    //向其相邻周边探索,是就标记 
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%s",map[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(!vis[i][j]&&map[i][j]==#){
                dfs(i,j);
                cnt++;
            }
        }
    }//逐个点判断 
    printf("%d\n",cnt);
    return 0;
}

思想:用DFS都找一遍,遍历整个地图然后每个点用dfs去找,找到草坪就标记,在遍历整个地图的时候若当前点是前一个点的相邻点,因为在前一个点的dfs搜索中已经标记了当前点,所以在当前点的条件判断中不会进入当前点的dfs。

DFS之草坪找人

标签:mic   探索   %s   oid   com   clu   pre   ring   div   

原文地址:https://www.cnblogs.com/jcahsy/p/12462325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!