블루 브릿지 컵 - 학교 시뮬레이션 게임 (잔디 문제)

2020 블루 브릿지 컵 - 학교 시뮬레이션 게임

주제 :

땅 조각 샤오밍 그가 작은 n 행 및 m 열의 각 행에 공간이 분할되며, 각 컬럼의 길이는 1이다.
샤오 밍은 그들 중 일부는 작은 청소, 심은 잔디와 다른 작은 조각 광장 남아 선택했다.
잔디는 매우 빠르고, 매월, 잔디의 일부는 잔디의 작은 조각을 심어 경우가 소유하고, 아래로, 네 개의 작은 청소를 좌우 4 개의 작은 열린 공간 확장 될 것입니다 밖으로 성장할 것 자랍니다 그것은 잔디의 작은 조각이 될 것입니다.
케이 개월 후에 열린 공간에 잔디가 어떤에 배치, 샤오 밍을 알려주세요.

입력 형식 :
입력의 첫 번째 행은 N 개의 정수 포함 해요.
이어서, N 행, m 문자를 포함하는 각각의 행은 오픈 스페이스 문자 사이에 공백이없는 초기 상태를 나타낸다. 소수점 경우, 문자 g 경우, 잔디의 종류를 나타내는, 열린 공간으로 표시됩니다.
다음에 정수 (k)를 포함한다.

출력 형식 :
출력 n 개의 행, m 문자를 포함하는 각 행 k는 상태 공간 개월이다. 문자 g이 긴 잔디를 나타내는 경우 소수점 경우, 열린 공간으로 표시됩니다.

샘플 입력 :

4월 5일
· G ...
.....
... g.
.....
2

샘플 출력 :

GGGG.
ggggg
.gggg
..ggg

아이디어 :

String 형, 문자열 형하지만 수정 작업에 편리하지, 새로운 숯불 [] 배열의 모든 마커를 저장하는 데 사용되는 형태의 입력.

N 개월 N 사이클에 의해 N 배의 잔디의 증가이며, 각 사이클은 지정된 주소 변경 표시 g 의해 둘러싸인 표지 g을 해결하는 것이다.

 

(1 개)  수입 java.util.Scanner;
2  
3  공용  클래스 주요 {
 4      공공  정적  무효 메인 (문자열 []에 args) {
 5          스캐너 스캔 = 새로운 스캐너 (System.in);
6          INT N = scan.nextInt ();
7          INT m = scan.nextInt ();
8          문자열 [] = 장소는 새로운 문자열 [N + 1 ];
9           ( INT I = 0; i가 <N; I ++ ) {
 10              위치가 [I] = scan.next ();    // 输入地图
(11)         }
 12는          INT 개월은 scan.nextInt = ();         // 개월 엔트리 
(13)가          
14          문자 [] [] = P 새로운 새  문자 [N- [m];     // 이차원 배열 P [N- [m]로지도; 
15           ( INT I = 0; I <N-; I ++ ) {
 16               ( INT J = 0; J <m이, J ++ ) {
 17.                  P는 [I]가 [J] = 찾는 [I]를 .charAt (J)
 (18)이다              }
 . (19)          }
 (20)은           [] [] P2 = 새로운 새  문자 [N- [m]은,     // P2 임시 
21 인          위한( INT t = 0; t는 <개월; t ++는 ) {
 22          
(23)              에 대한 ( INT는 전 = 0; N I <; I ++ ) {
 24                   ( INT J = 0; J <m, J ++ ) {
 25 일                      경우 (p [내가 [J] == 'g' ) {
 26                          (P2) [I] [j]가 '= g' ;
27 일                          경우 (I-1> = 0) P2는 [I-1] [j]가 'g'= ;
28 일                          경우 는 (i + 1 <N), P2 [내가 + 1] [j]가 'g'= ;
(29)                          만약 (j-1> = 0) (P2) [I] [J-1] = 'g' ;
(30)                          만약 (j + 1 <m) P2 [I] [J + 1] = 'g' ;
 32                  }
 33              }
 34               ( INT 난 = 0; I <N는, I ++ ) {
 35                   ( INT J = 0; J <m, J ++ ) {
 36                      P [I] [J] = P2 [I] [J]는 ;
37                  }
 38              }
 39          }
 40           ( INT 난 = 0; 나는 <N; I ++ ) {
 41               ( INT J = 0; J <m J ++ ) {
 42                  의 경우 (P [I] [J] == 'g는 ' ) System.out.print (p [I] [J]);
(43)                  다른System.out.print ( "." );
44              }
 45              에서 System.out.println ();
46          }
 47          scan.close ();
48      } 
49 }

 

추천

출처www.cnblogs.com/polygon-live/p/12486868.html