题目描述
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?
输入输出格式
输入格式:
输入:整数m,n(m行,n列)
矩阵
输出格式:
输出:细胞的个数
输入输出样例
输入样例#1: 复制
4 10
0234500067
1034560500
2045600671
0000000089
输出样例#1: 复制
4
思路:搜索
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,m,ans; char s[110]; int map[110][110]; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; void dfs(int x,int y){ for(int i=0;i<4;i++){ int cx=dx[i]+x; int cy=dy[i]+y; if(cx>=1&&cx<=n&&cy>=1&&cy<=m&&map[cx][cy]){ map[cx][cy]=0; dfs(cx,cy); } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%s",s); for(int j=0;j<m;j++) if(s[j]>='1'&&s[j]<='9') map[i][j+1]=1; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(map[i][j]){ dfs(i,j); ans++; } cout<<ans; }