日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1003. 二哥养细菌—java

發布時間:2025/3/20 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

【數據范圍】

對于全部數據:1L100?,保證最終能夠充滿培養皿(不算有抗生素的格子)。

Sample Input

3 2 0 0 0 1 0 0 0 0

Sample 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。