计蒜客:C10 第四部分:深度优先搜索基础 踏青

【C++代码】

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0;
char maze[110][110];
bool vis[110][110];
int dir[4][2]={{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
bool check(int x,int y){
    return x>=1&&y>=1&&x<=n&&y<=m&&!vis[x][y]&&maze[x][y]=='#';
}
void dfs(int x,int y){
    vis[x][y]=true;
    for(int i=0;i<4;i++){
        int tx=x+dir[i][0];
        int ty=y+dir[i][1];
        if(check(tx,ty)){
            dfs(tx,ty);
        }
    }
}
int main(){
    freopen("hiking.in","r",stdin);
    freopen("hiking.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>maze[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(maze[i][j]=='#'&&!vis[i][j]){
                dfs(i,j);
                ans++;
            }
        }
    }
    cout<<ans;
    return 0;
}
相关推荐
Σίσυφος190024 分钟前
PCL Point-to-Point ICP详解
人工智能·算法
玄〤1 小时前
Java 大数据量输入输出优化方案详解:从 Scanner 到手写快读(含漫画解析)
java·开发语言·笔记·算法
weixin_395448911 小时前
main.c_cursor_0202
前端·网络·算法
senijusene1 小时前
数据结构与算法:队列与树形结构详细总结
开发语言·数据结构·算法
杜家老五1 小时前
综合实力与专业服务深度解析 2026北京网站制作公司六大优选
数据结构·算法·线性回归·启发式算法·模拟退火算法
2301_765703142 小时前
C++与自动驾驶系统
开发语言·c++·算法
Ll13045252982 小时前
Leetcode二叉树 part1
b树·算法·leetcode
鹿角片ljp2 小时前
力扣9.回文数-转字符双指针和反转数字
java·数据结构·算法
热爱编程的小刘2 小时前
Lesson04---类与对象(下篇)
开发语言·c++·算法
有代理ip3 小时前
成功请求的密码:HTTP 2 开头响应码深度解析
java·大数据·python·算法·php