首页 > 其他 > 详细

找细胞(题解)

时间:2020-11-22 12:56:21      阅读:68      评论:0      收藏:0      [点我收藏+]

题目描述

一矩形阵列由数字 00 到 99 组成,数字 11 到 99 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。

输入格式

第一行两个整数代表矩阵大小 nn 和 mm。

接下来 nn 行,每行一个长度为 mm 的只含字符 0 到 9 的字符串,代表这个 n \times mn×m 的矩阵。

输出格式

一行一个整数代表细胞个数。

输入输出样例

输入 #1
4 10
0234500067
1034560500
2045600671
0000000089
输出 #1
4

说明/提示

数据规模与约定

对于 100\%100% 的数据,保证 1 \le n,m \le 1001n,m100。

 

 

#include <iostream>

#include <cstdio>

using namespace std;

void dfs(int x,int y);

int n,m;

char a[105][105];

int dx[4]={-1,0,1,0};//方向

int dy[4]={0,1,0,-1};//方向

int ans;

void dfs(int x,int y)

{

    if(a[x][y]-‘0‘==0) return;

    else{

        if(x>=0 && x<n && y>=0 && y<m)

        {

            a[x][y]=‘0‘;

            for(int i=0;i<4;i++)

                dfs(x+dx[i],y+dy[i]);

        }

    }

    return;//越界,则不满足,return。这和其他代码把越界结束的条件放在之前是一样的(放在之前这里就没有return了)

}

int main()

{

    scanf("%d%d",&n,&m);

    for(int i=0;i<n;i++)

    {

        cin>>a[i];

    }

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<m;j++)

        {

            if(a[i][j]-‘0‘!=0)

            {

                dfs(i,j);

                ans++;

            }

        }

    }

    cout<<ans;

    return 0;

}

找细胞(题解)

原文:https://www.cnblogs.com/Hello-world-hello-lazy/p/14018562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!