1329:例8.2细胞

Posted jzxnl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1329:例8.2细胞相关的知识,希望对你有一定的参考价值。

传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1329

 

【题目描述】

一矩形阵列由数字0

9组成,数字19

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

阵列

 

4 10
0234500067
1034560500
2045600671
0000000089

4

个细胞。

【输入】

第一行为矩阵的行n

和列m

;

下面为一个n×m

的矩阵。

【输出】

细胞个数。

【输入样例】

4 10
0234500067
1034560500
2045600671
0000000089

【输出样例】

4




#include<iostream>
#include<queue>
#include<cstring>
using namespace std; 
#define N 100
struct qs
    int x,y;
;
int n,m,ans;
char map[N][N];
bool maps[N][N];
int xs[]=0,0,-1,1;
int ys[]=1,-1,0,0;
queue < qs >q;
int main()

    cin>>n>>m;
    memset(maps,false,sizeof(maps));
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        
            cin>>map[i][j];
            if(map[i][j]!=0)maps[i][j]=true;
        
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        
            if(maps[i][j]==true)
            
                // maps[i][j]=f
                qs tmp;
                tmp.x=i;tmp.y=j;
                q.push(tmp);
                while(!q.empty())
                
                    qs tmp1=q.front();
                    q.pop();
                    for(int ks=0;ks<4;ks++)
                    
                        int x1,y1;
                        x1=tmp1.x+xs[ks];
                        y1=tmp1.y+ys[ks];
                        if(maps[x1][y1]==true&&x1>=1&&x1<=n&&y1<=m&&y1>=1)
                        
                            qs df;
                            df.x=x1;
                            df.y=y1;
                            maps[x1][y1]=false;
                            q.push(df);
                        
                    
                
                ans++;
            
        
    cout<<ans<<endl;

 

以上是关于1329:例8.2细胞的主要内容,如果未能解决你的问题,请参考以下文章

ybt 1329 细胞 广度优先搜索 (二维,寻找符合条件节点)

leetcode1329

1329. 将矩阵按对角线排序(暴力)

hiho #1329 平衡树·Splay

●POJ 1329 Circle Through Three Points

细胞个数题解(广度优先搜索)