细胞问题

来源:互联网 发布:轻而易举瓷砖设计软件 编辑:程序博客网 时间:2024/04/30 01:52
  • 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:阵列 0234500067 1034560500 2045600671 0000000089 有4个细胞。

  • 题意:求相连在一起的细胞总数

  • #include <cstdio>#include <cctype>using namespace std;bool a[61][61],v[61][61]; char x; int ans,n,m; const int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};bool check(int x,int y){if (x>0&&y>0&&x<=n&&y<=m&&!v[x][y]) return true; else return false; //判断}void bfs(int x,int y){if (!a[x][y]||v[x][y]) return; v[x][y]=1; //走过吗?for (int i=0;i<4;i++) if (check(x+dx[i],y+dy[i])) bfs(x+dx[i],y+dy[i]);}int main(){scanf("%d%d",&n,&m); for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){x=getchar();while (!isdigit(x)) x=getchar();a[i][j]=(x>48);}}for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)if (a[i][j]&&!v[i][j]) ans++,bfs(i,j); printf("%d",ans); return 0;}
原创粉丝点击