计蒜客: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;
}
相关推荐
why1518 分钟前
面经整理——算法
java·数据结构·算法
悦悦子a啊17 分钟前
将学生管理系统改造为C/S模式 - 开发过程报告
java·开发语言·算法
痕忆丶27 分钟前
双线性插值缩放算法详解
算法
_codemonster2 小时前
深度学习实战(基于pytroch)系列(四十八)AdaGrad优化算法
人工智能·深度学习·算法
鹿角片ljp2 小时前
力扣140.快慢指针法求解链表倒数第K个节点
算法·leetcode·链表
自由生长20242 小时前
位运算第1篇-异或运算-快速找出重复数字
算法
xxxxxmy3 小时前
同向双指针(滑动窗口)
python·算法·滑动窗口·同向双指针
释怀°Believe3 小时前
Daily算法刷题【面试经典150题-5️⃣图】
算法·面试·深度优先
List<String> error_P3 小时前
数据结构:链表-单向链表篇
算法·链表
ss2733 小时前
ConcurrentHashMap:扩容机制与size()方法
算法·哈希算法