美文网首页
1003.二哥养细菌

1003.二哥养细菌

作者: 小路子好 | 来源:发表于2019-01-19 10:17 被阅读0次

题目描述

二哥不仅种苹果和花生,还养了很多细菌。二哥的细菌培养皿成方格形,边长为L。长期培养后,二哥发现了细菌繁殖的规律:最初每个格子里的细菌及其后代都会独立繁殖,每次繁殖都会在其上下左右四个相邻的格子里产生新的细菌,而已经存在的细菌在培养皿充满细菌之前都不会死亡。另外,有一些格子里可能还有抗生素,细菌在有抗生素的格子里无法繁殖。
二哥于是发明了一个游戏:取一个新的培养皿,在某些格子里放入细菌或抗生素,然后观察细菌不断繁殖直至充满整个培养皿的所有没有抗生素的格子。不过二哥已经对这个游戏厌烦了,他现在只想知道经过多少轮繁殖后,细菌会充满整个培养皿(不算有抗生素的格子)。

输入格式

第1行有1个整数,边长L。
第2行至第L+1行,每行有L个整数,取值为0、1或2。0表示格子里最初没有细菌,1表示格子里最初有细菌,2表示格子里最初有抗生素。
输出格式
输出一个整数m,表示经过m轮繁殖后,细菌会充满整个培养皿(不算有抗生素的格子)。

说明

【样例解释】 第一轮繁殖:
2 1 0
1 1 1
0 1 0
第二轮繁殖:
2 1 1
1 1 1
1 1 1
【数据范围】
对于全部数据:
1≤L≤100
1≤L≤100
,保证最终能够充满培养皿(不算有抗生素的格子)。

Sample Input

3
2 0 0
0 1 0
0 0 0

Sample Output

2

分析

广度遍历

代码

#include<iostream>
using namespace std;

#define N 101

int  Moving[][2] ={{-1, 0},{0,-1},{1, 0},{0,1}};
int main()
{
    int L;
    int A[N][N];
    int X1[N*N];
    int Y1[N*N];
    int X2[N*N];
    int Y2[N*N];

    cin>>L;
    int k=1;
    for(int i=1;i<=L;++i)
        for(int j=1;j<=L;++j)
        {
            cin>>A[i][j];
            if(A[i][j]==1)
            {
                X1[k] = i;
                Y1[k] = j;
                k++;
            }
        }
    int cnt1 = k -1;
    int Time =0;
    while(cnt1 !=0)
    {
             Time ++;
             int  cnt2=1;
            for(int i=1; i<=cnt1;i++)
                for(int j = 0; j< 4; j++)
                {
                    int X = Moving[j][0] + X1[i];
                    int Y = Moving[j][1] + Y1[i];

                    if(X<=0||X> L||Y<=0||Y>L)
                        continue;

                    if(A[X][Y]==0)
                    {
                        A[X][Y] =1;
                        X2[cnt2] = X;
                        Y2[cnt2] = Y;
                        cnt2++;
                    }
                }
            cnt1 = cnt2-1;

            if(cnt1!=0)
            {
                for(int i =1;i<=cnt1;i++)
                {
                    X1[i] = X2[i];
                    Y1[i] = Y2[i];
                }
            }

    }
    cout<<Time-1<<endl;
    return  0;
}

相关文章

  • 1003.二哥养细菌

    题目描述 二哥不仅种苹果和花生,还养了很多细菌。二哥的细菌培养皿成方格形,边长为L。长期培养后,二哥发现了细菌繁殖...

  • 1003. Triangle Partition

    1003. Triangle Partition Time limit: 1 second Memory limi...

  • 健康生活之肠胃篇

    如何养好肚子里的肠道菌群? 多接触好细菌,多吃好细菌喜欢吃的食物,少杀死体内的益生菌。 首先,如何多接触好细菌? ...

  • 二哥

    二哥的爱好还是很广的,比如:管闲事、喝酒、养狗。 二哥为啥叫二哥?因为他在兄弟几个中排名第二,所以...

  • 20221015专业英语

    1001. bore diameter 孔径 1002. flange diameter法兰直径 1003. ni...

  • 1003. 我要通过!(20)

    传送门 PAT (Basic Level) Practise (中文)1003. 我要通过!(20) 题目 “答案...

  • 【PAT-甲级-C++】1003. Emergency (25)

    1003. Emergency (25) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判...

  • 怕老鼠

    二哥特别爱养猫,因为二哥怕老鼠。 二哥对老鼠的惧怕来源于童年时期家里养的一只猫,一只非常擅长捉老鼠的狸花猫,小咪。...

  • 一只猫咪,像面镜子照出自己对孩子的简单粗暴

    01 很多家长不喜欢家里养小动物,因为有孩子,担心有细菌。当然,卫生也是一大问题。养个鱼什么的还好,养猫养狗似乎都...

  • 1003. Emergency (25)

    As an emergency rescue team leader of a city, you are giv...

网友评论

      本文标题:1003.二哥养细菌

      本文链接:https://www.haomeiwen.com/subject/cqaedqtx.html