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

    题目描述

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

    输入格式

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

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

    输出格式

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

    输入输出样例

    4 10
    0234500067
    1034560500
    2045600671
    0000000089
    

      

    4
    

    分析

    基础bfs染色题目,将字符串转化为整型01图来标记,遍历每一个点,如果这个点没有被标记,则代表整个区块没有被标记,从当前点染色整个区块。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,m;
    
    char mp[105][105];
    int mark[105][105];
    int ans;
    int move_x[4]={0,-1,0,1};
    int move_y[4]={1,0,-1,0}; 
    
    struct Point
    {
        int xx;
        int yy;
        Point(int _xx,int _yy):
            xx(_xx),yy(_yy){}
    };
    
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>mp[i][j];
                if(mp[i][j]=='0') mark[i][j]=1;//打好标记不能走 
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(mark[i][j]==1) continue;//走不了 
                queue <Point> node;
                node.push(Point(i,j));
                mark[i][j]=1;//染色
                ans++;//区块之前没有被染色,答案+1 
                while(!node.empty())//染色当前点所在区块 
                {
                    Point now_node=node.front();
                    node.pop();
                    for(int k=0;k<4;k++)
                    {
                        Point new_node=Point(now_node.xx+move_x[k],now_node.yy+move_y[k]);
                        if(mark[new_node.xx][new_node.yy]!=1&&new_node.xx<=n&&new_node.xx>=1&&new_node.yy>=1&&new_node.yy<=m)
                        {
                            mark[new_node.xx][new_node.yy]=1;
                            node.push(new_node);
                        }
                    }
                }
            }
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    CSS------制作一个带+-的input框
    rest简介
    flask之flask-login登陆验证(一)
    Python之异常设计(一)
    flask之flask-sqlalchemy(一)
    flask之wtforms 表单验证(一)
    三 Django模型层之Meta
    二 Djano模型层之模型字段选项
    一 Django模型层简介
    Django之路由、模板和模型系统 (转载)
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/15560172.html
Copyright © 2011-2022 走看看