Luogu P1451 求细胞数量

时间:2024-06-24 16:36:32

题目描述

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?

输入输出格式

输入格式:

输入:整数m,n(m行,n列)

矩阵

输出格式:

输出:细胞的个数

输入输出样例

输入样例#1:
4  10
0234500067
1034560500
2045600671
0000000089
输出样例#1:
4
解释样例:

0000

0000

000

00000000

一样的颜色表示为一个细胞

#include<bits/stdc++.h>
using namespace std;
int read()
{
int ret=,ok=;
char ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-')ok=-;
ch=getchar();
}
for(;ch>=''&&ch<='';ch=getchar())
ret=ret*+ch-'';
return ret*ok;
}
int ans=;
int m,n;
int a[][];
inline void dfs(int x,int y)
{
if(!a[x][y])
return ;
a[x][y]=;//符0,表示搜过,不在搜了。
dfs(x+,y);//向上
dfs(x-,y);//向下
dfs(x,y+);//向右
dfs(x,y-);//向左
}
int main()
{
//freopen("cell.in","r",stdin);
//freopen("cell.out","w",stdout);
m=read(),n=read();
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
scanf("%1d",&a[i][j]);//这个输入很关键,如果你cin,会错,你可以试试。
}
}
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
if(a[i][j]!=)
{
ans++;//找到一个,
dfs(i,j);//又从这个点搜
}
}
}
cout<<ans<<endl;
return ;
}