美文网首页编程练习
编程练习-2022-05-09-Andy

编程练习-2022-05-09-Andy

作者: nase_luobeng | 来源:发表于2022-05-09 20:35 被阅读0次

    题目

    清明时节雨纷纷,路上都是大水坑。已知一张地面的俯视图照片,请计算机智能识别出有几块独立的水坑。照片用n*m个像素的点阵组成,‘.’代表干区,‘@’代表有水。如果两个‘@’是(八个方向)相邻的,那么他们属于同一个水坑。如果一个‘@’独立出现,也代表一个水坑。

    标签

    DFS DFS八连通 465

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    int area,dx[10]={0,1,1,1,0,0,-1,-1,-1},dy[10]={0,1,0,-1,1,-1,1,0,-1},n,m;
    char a[100][100];
    void dfs(int d,int f){
        a[d][f]='.';
        for(int k=1;k<=8;k++){
            int nd=d+dx[k],nf=f+dy[k];
            if(nd>=1&&nd<=n&&nf>=1&&nf<=m&&a[nd][nf]=='@'){
                dfs(nd,nf);
            }
        }
    }
    int main()
    {
        freopen("puddle.in","r",stdin);
        freopen("puddle.out","w",stdout);
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>a[i][j];
        int ans=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(a[i][j]=='@'){
                    dfs(i,j);
                    ans++;
                }
        cout<<ans;
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:编程练习-2022-05-09-Andy

        本文链接:https://www.haomeiwen.com/subject/okqkurtx.html