Luogu P1451 求细胞数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu P1451 求细胞数量相关的知识,希望对你有一定的参考价值。

题目描述

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

输入输出格式

输入格式:

 

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

矩阵

 

输出格式:

 

输出:细胞的个数

 

输入输出样例

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

0234500067

1034560500

2045600671

0000000089

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

 

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

 

以上是关于Luogu P1451 求细胞数量的主要内容,如果未能解决你的问题,请参考以下文章

P1451 求细胞数量

dfsp1451 求细胞数量

求细胞数量 - 洛谷

求细胞数量 - 洛谷

求细胞数量 - 洛谷

求细胞数量——dfs