计蒜客: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;
}
相关推荐
达子66613 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
夏幻灵13 小时前
每日一题:LeetCode 165:比较版本号
算法·leetcode·职场和发展
道尔柯南13 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
Navigator_Z13 小时前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
码爸14 小时前
决策树介绍与示例
python·算法·机器学习
动词ing14 小时前
【题目练习】字符串相乘
算法
0+11114 小时前
算法 --链表
数据结构·算法·leetcode·链表
aqiu11111115 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
Terra.K15 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
Peregrine916 小时前
C++ - > 类和对象
java·c++·算法