zoukankan      html  css  js  c++  java
  • 找细胞(题解)

    题目描述

    一矩形阵列由数字 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.
  • 相关阅读:
    zookeeper常用命令
    linux查看日志相关命令
    第三十一期: VueRouter源码浅析 传统前端和多媒体前端
    第二十八期:模型,模块,组件,框架和架构
    星际2光速注卵
    星际心得
    英语词根研究和单词记忆
    星际2如何离线模式打电脑和rpg地图练操作
    星际研究
    第一篇帖子:不利用中间变量交换两个数字的小算法题
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/14018562.html
Copyright © 2011-2022 走看看