1003. 二哥养细菌—java
生活随笔
收集整理的這篇文章主要介紹了
1003. 二哥养细菌—java
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1003. 二哥養細菌
題目描述
二哥不僅種蘋果和花生,還養了很多細菌。二哥的細菌培養皿成方格形,邊長為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?,保證最終能夠充滿培養皿(不算有抗生素的格子)。
Sample Input
3 2 0 0 0 1 0 0 0 0Sample Output
2這道題很明顯你可以通過每一次遍歷來得到答案,但是這是一種效率和低下的辦法,需要n*L^2次,但是如果一個人在作者道題去模擬這道題時,絕對不是每次遍歷,而是記住了上一次由0變為1的位置,所以我們也必須記住位置,這樣的效率最高,為L^2次。
下面是源代碼 import java.util.ArrayList; import java.util.Scanner;public class Main{private static Scanner in;public static void main(String[] args) {in = new Scanner(System.in);int L = in.nextInt();Tag [][] tag=new Tag[L+2][L+2];ArrayList <Tag> list =new ArrayList<Tag>();for(int i=0;i<L+2;i++){for(int j=0;j<L+2;j++){tag[i][j]=new Tag();if(i==0||i==L+1||j==0||j==L+1){tag[i][j].x=i;tag[i][j].y=j;tag[i][j].flag=true;}else{tag[i][j].x=i;tag[i][j].y=j;tag[i][j].s=in.nextInt();if(tag[i][j].s==1){list.add(tag[i][j]);tag[i][j].flag=true;}if(tag[i][j].s==2){tag[i][j].flag=true;}}}}int a=list.size();int res=0;int count =0;for(int i=0;i<list.size();i++){count++;Tag temp = list.get(i);if(!tag[temp.x-1][temp.y].flag){list.add(tag[temp.x-1][temp.y]);tag[temp.x-1][temp.y].flag=true;}if(!tag[temp.x][temp.y-1].flag){list.add(tag[temp.x][temp.y-1]);tag[temp.x][temp.y-1].flag=true;}if(!tag[temp.x][temp.y+1].flag){list.add(tag[temp.x][temp.y+1]);tag[temp.x][temp.y+1].flag=true;}if(!tag[temp.x+1][temp.y].flag){list.add(tag[temp.x+1][temp.y]);tag[temp.x+1][temp.y].flag=true;}list.remove(i);i--;if(count==a){a=list.size();res++;count=0;}}System.out.println(res-1);} static class Tag{int x;int y;int s;boolean flag;} }
轉載于:https://www.cnblogs.com/969059506-java/p/3793119.html
總結
以上是生活随笔為你收集整理的1003. 二哥养细菌—java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 4.x环境搭建
- 下一篇: python startswith