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 }