洛谷 P1451 求细胞数量

题目描述

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

输入输出格式

输入格式:

 

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

矩阵

 

输出格式:

 

输出:细胞的个数

 

输入输出样例

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


dfs
屠龙宝刀点击就送
#include <iostream>
#include <cstdio>
using namespace std;
char tx[151][151];
int fx[5]={1,-1,0,0},fy[5]={0,0,-1,1},m,n,ans;
void dfs(int x,int y)
{
    tx[x][y]='0';
    for(int k=0;k<4;++k)
    {
        int to_x=x+fx[k],to_y=y+fy[k];
        if(to_x>=1&&to_x<=m&&to_y>=1&&to_y<=n&&tx[to_x][to_y]!='0') dfs(to_x,to_y);
    }
}
int main()
{
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;++i)
     for(int j=1;j<=n;++j)
      cin>>tx[i][j];
    for(int i=1;i<=m;++i)
     for(int j=1;j<=n;++j)
      if(tx[i][j]!='0') 
      {
          ans++;
        dfs(i,j);
      }
    printf("%d",ans);
    return 0; 
}

 

 
posted @ 2017-04-09 16:33  杀猪状元  阅读(210)  评论(0编辑  收藏  举报