[codevs3492] 细胞个数

来源:互联网 发布:mac和nars哪个修容粉好 编辑:程序博客网 时间:2024/05/17 03:46

题目链接

思路:dfs

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int m,n,tot;int dx[]={0,1,-1,0,0};int dy[]={0,0,0,1,-1};char s[1005][1005];int map[1005][1005];int vis[1005][1005]; int dfs(int x,int y){    for(int i=1;i<=4;i++)    {        int nx=x+dx[i];        int ny=y+dy[i];        if(nx>n||nx<1||ny>m||ny<1)        continue;        if(map[nx][ny])        {            map[nx][ny]=0;把四个方向的细胞赋为0            dfs(nx,ny);        }     }}int main(){    cin>>n>>m;    for(int i=1;i<=n;i++)    for(int j=1;j<=m;j++)    {        cin>>s[i][j];        if(s[i][j]=='0')        map[i][j]=0;        else        map[i][j]=1;    }    for(int i=1;i<=n;i++)    for(int j=1;j<=m;j++)    if(map[i][j]==1)    {        map[i][j]=0;        dfs(i,j);//找一个细胞        tot++;//它周围的细胞已被赋为0,计数器加1    }    cout<<tot<<endl;    return 0;}
0 0
原创粉丝点击