• 【一本通1329:【例8.2】细胞&&洛谷P1451 求细胞数量】


    1329:【例8.2】细胞

    【题目描述】

    一矩形阵列由数字0到9组成,数字19代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:

    阵列

    4 10
    0234500067
    1034560500
    2045600671
    0000000089

    有4个细胞。

    【输入】

    第一行为矩阵的行n和列m;

    下面为一个n*m的矩阵

    【输出】

    细胞个数。

    【输入样例】

    4 10
    0234500067
    1034560500
    2045600671
    0000000089

    【输出样例】

    4
    #include<bits/stdc++.h>//万能头还挺好用(考试千万别用啊)
    using namespace std;
    int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};//各种路径的情况
    int bz[100][100],num=0,n,m;
    void doit(int p,int q)
    {
        int x,y,t,w,i;
        int h[1000][2];
        num++;//计次专用
        bz[p][q]=0;
        t=0;w=1;h[1][1]=p;h[1][2]=q;//一波特判
        do
        {
            t++;
            for(int i=0;i<=3;i++)//大力模拟各种情况,广搜
            {
                x=h[t][1]+dx[i];
                y=h[t][2]+dy[i];
                if((x>=0)&&(x<m)&&(y>=0)&&(y<n)&&(bz[x][y]))//if判断十分重要
                {
                    w++;
                    h[w][1]=x;
                    h[w][2]=y;
                    bz[x][y]=0;
                }
            }
        }
        while(t<w);
    }
    int main()
    {
        int i,j;
        char s[100],ch;
        scanf("%d%d
    ",&m,&n);
        for(int i=0;i<=m-1;i++)
        {
            for(int j=0;j<=n-1;j++)
            {
                bz[i][j]=1;
            }
        }
        for(int i=0;i<=m-1;i++)
        {
            scanf("%s",s);
            for(int j=0;j<=n-1;j++)
            {
                if(s[j]=='0')
                {
                    bz[i][j]=0;
                }
            }
        }
        for(int i=0;i<=m-1;i++)
        {
            for(int j=0;j<=n-1;j++)
            {
                if(bz[i][j])
                {
                    doit(i,j);
                }
            }
        }
        printf("%d",num);
    }

    这个题相对来说还挺好理解的

    主要的还是广搜的思想

    学会的可以拿下面的题目来试试(PS:下面这个题与细胞极为相似,但需要用字符串哦qwq)

    一本通1249:Lake Counting

  • 相关阅读:
    (五)CSS和JavaScript基础
    (四)标签框架
    (三)表单与servlet的初步结合
    (三)文档结构(上)
    (二十一)持有对象以及泛型基础(1)
    (二十)内部类详解(转)
    (十九)接口类型的简介
    nginx配置文件
    nginx负载均衡
    debian iptables持久化
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/10741158.html
Copyright © 2020-2023  润新知