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

题目

清明时节雨纷纷,路上都是大水坑。已知一张地面的俯视图照片,请计算机智能识别出有几块独立的水坑。照片用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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么想写这个帖子 只要提到嵌入式,一般码农心里就会产生两种想法:一种是“嵌入式系统特别简单,学51单片机的时候,...
    边城的泥瓦匠阅读 128评论 0 1
  • 题目 给定一个顺序表的长度和起始地址,以及该顺序表的数据类型(只包括char,int两种类型)查询某个地址是该顺序...
    nase_luobeng阅读 153评论 0 0
  • (平凡的故事,写给对生活满怀深情的人。微信公众号:aideliwu506) 春天是北方最温心的季节。冬天的雪慢慢消...
    wenran0503阅读 359评论 0 0
  • 千里冰封,万里雪飘。小时候冬天之冷,超乎想象。 每年冬天老家村子里几个大水坑都会结厚厚的一层冰,冰层足...
    中原雨城阅读 128评论 0 0
  • 陂头有专人管理,多是聘任洋渡村力气好,水性好,责任心強的人担当。我们那一代人,大概奇石团村无人不晓"猛颈养...
    大莲子阅读 2,102评论 0 4