码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu P1451 求细胞数量

时间:2017-08-11 10:07:55      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:i++   logs   bsp   ==   stdout   c++   颜色表   str   整数   

题目描述

一矩形阵列由数字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 求细胞数量

标签:i++   logs   bsp   ==   stdout   c++   颜色表   str   整数   

原文地址:http://www.cnblogs.com/Hammer-cwz-77/p/7344002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!