• 找细胞(题解)


    题目描述

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

    输入格式

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

    接下来 nn 行,每行一个长度为 mm 的只含字符 0 到 9 的字符串,代表这个 n imes 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;

    }

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    Docker(二十一)-Docker Swarm集群部署
    Docker(十八)-Docker配置DNS
    Docker(十七)-修改Docker容器启动配置参数
    Docker(十六)-Docker的daemon.json的作用
    JavaScript实现无缝滚动 原理详细讲解
    JS 数字 、中文、 英文、判断
    JS常用属性方法大全
    vue.js插件使用(01) vue-resource
    Vue.js常见问题
    web前端开发必备技术
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/14018562.html
Copyright © 2020-2023  润新知