藍橋杯—校內模擬賽(種草問題)

2020藍橋杯—校內模擬賽

題目:

小明有一塊空地, 他將這塊空地劃分爲n行m列的小塊,每行和每列的長度都爲1。
小明選了其中的一些小塊空地,種上了草,其餘小塊仍然保持是空地。
這些草長得很快,每一個月, 草都會向外長出一些,若是一個小塊種了草,則它將向本身的上,下、 左、右四小塊空地擴展,這四小塊空地都將變爲有草的小塊。
請告訴小明,k個月後空地上哪些地方有草。java

輸入格式:
輸入的第一行包含兩個整數m,n。
接下來n行,每行包含m個字母,表示初始的空地狀態,字母之間沒有空格。若是爲小數點,表示爲空地,若是字母爲g,表示種了草。
接下來包含一個整數k.數組

輸出格式:
輸出n行,每行包含m個字母,表示k個月後空地的狀態。若是爲小數點,表示爲空地,若是字母爲g表示長了草。spa

樣例輸入:code

4 5
.g...
.....
...g.
.....
2blog

樣例輸出:class

gggg.
ggggg
.gggg
..gggimport

思路:

輸入形式爲String類型,可是String類型不方便進行修改操做,因此新建Char[]數組用來存放全部的標記。擴展

n個月就是增長了n次草坪,進行n次循環,每次循環就是在每個標記爲g的地址,周圍指定地址更改標記爲g。循環

 

 1 import java.util.Scanner;
 2 
 3 public class Main{
 4     public static void main(String[] args) {
 5         Scanner scan = new Scanner(System.in);
 6         int n = scan.nextInt();
 7         int m = scan.nextInt();
 8         String[] place = new String[n+1];
 9         for(int i = 0; i< n; i++) {
10             place[i] = scan.next();    //輸入地圖
11         }
12         int month = scan.nextInt();        //輸入月份
13         
14         char[][] p = new char[n][m];    //地圖轉爲二維數組p[n][m];
15         for(int i = 0; i<n; i++) {
16             for(int j = 0; j< m; j++) {
17                 p[i][j] = place[i].charAt(j);
18             }
19         }
20         char[][] p2 = new char[n][m];    //暫存地p2
21         for(int t = 0; t< month; t++) {
22         
23             for(int i = 0; i<n; i++) {
24                 for(int j = 0; j< m; j++) {
25                     if(p[i][j] == 'g') {
26                         p2[i][j] = 'g';
27                         if(i-1>=0) p2[i-1][j] = 'g';
28                         if(i+1<n) p2[i+1][j] = 'g';
29                         if(j-1>=0) p2[i][j-1] = 'g';
30                         if(j+1<m) p2[i][j+1] = 'g';
31                     }
32                 }
33             }
34             for(int i = 0; i<n; i++) {
35                 for(int j = 0; j< m; j++) {
36                     p[i][j]=p2[i][j];
37                 }
38             }
39         }
40         for(int i = 0; i<n; i++) {
41             for(int j = 0; j< m; j++) {
42                 if(p[i][j] == 'g')System.out.print(p[i][j]);
43                 else System.out.print(".");
44             }
45             System.out.println();
46         }
47         scan.close();
48     }
49 }
相關文章
相關標籤/搜索