zoukankan      html  css  js  c++  java
  • 洛谷 P1451 求细胞数量

    洛谷 P1451 求细胞数量

    题目链接

    https://www.luogu.org/problemnew/show/P1451


    题目描述

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


    输入输出格式

    输入格式:

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

    输出格式:

    输出:细胞的个数


    思路

    看到很多大佬用搜索,但身为蒟蒻的我只会打暴力,琢磨着就做对了

    一开始我没有输出(连零都没有!),然后我就自闭了,有个同学说要有边界条件的判断,于是打上之后,还是不对,发现只需要判断上下左右四个点,于是我又删了另外四个点的判断

    然后身为蒟蒻的我就傻傻的通过啦!

    虽然时间可能比较多,但是数据水呀!


    代码

    #include<bits/stdc++.h>
    //懒人专用头文件不解释
    using namespace std;
    
    int n,m;
    char a[101][101];//
    int ans=0;
    
    void shensou(int x,int y) {
        //边界条件判断直接返回
        if(x<1||y<1||x>n||y>m) {
            return ;
        }
        //以下是四个点的判断
        //只要不是0都变成0,然后继续搜索
        if(a[x][y+1]!='0') {
            a[x][y+1]='0';
            shensou(x,y+1);
        }
        if(a[x][y-1]!='0') {
            a[x][y-1]='0';
            shensou(x,y-1);
        }
        if(a[x+1][y]!='0') {
            a[x+1][y]='0';
            shensou(x+1,y);
        }
        if(a[x-1][y]!='0') {
            a[x-1][y]='0';
            shensou(x-1,y);
        }
    }
    
    int main() {
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                cin>>a[i][j];
                //用字符数组输入,因为没有空格
            }
        }
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                if(a[i][j]!='0') {
                    a[i][j]=0;//不是0就变成零
                    ans++;
                    shensou(i,j);
                    //目的是将所有这个细胞中的元素清零
                    //这样就可以直接找下一个细胞的某个元素
                }
            }
        }
        printf("%d",ans);//愉快输出答案
        return 0;
    }
  • 相关阅读:
    nodeJS中的包
    NPM
    代码检查工具jshint和csslint
    javascript中Date对象的应用
    Collection包结构,与Collections的区别
    TreeMap、HashMap、LindedHashMap的区别
    HashMap和ConcurrentHashMap的区别,HashMap的底层源码
    HashMap和HashTable的区别
    Map、Set、List、Queue、Stack的特点与用法
    String、StringBuffer与StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/loceaner/p/10719999.html
Copyright © 2011-2022 走看看