블루 브릿지 컵 아날로그 청산 긴 잔디의 자바 구현

문제 설명
  땅 샤오밍 편은, 그 작은 n 행 및 m 열의 각 행에 공간이 분할되며, 각 컬럼의 길이는 1이다.
  샤오 밍은 그들 중 일부는 작은 청소, 심은 잔디와 다른 작은 조각 광장 남아 선택했다.
  잔디는 매우 빠르고, 매월, 잔디의 일부는 잔디의 작은 조각을 심어 경우가 소유하고, 아래로, 네 개의 작은 청소를 좌우 4 개의 작은 열린 공간 확장 될 것입니다 밖으로 성장할 것 자랍니다 그것은 잔디의 작은 조각이 될 것입니다.
  케이 개월 후에 열린 공간에 잔디가 어떤에 배치, 샤오 밍을 알려주세요.
입력 포맷
  입력의 제 1 라인의 두 정수 N, M을 포함한다.
  이어서, N 행, m 문자를 포함하는 각각의 행은 오픈 스페이스 문자 사이에 공백이없는 초기 상태를 나타낸다. 소수점 경우, 문자 g 경우, 잔디의 종류를 나타내는, 열린 공간으로 표시됩니다.
  다음에 정수 (k)를 포함한다.
출력 포맷
  출력 N 행, m 문자를 포함하는 각 행 k는 상태 공간 개월이다. 문자의 g는, 긴 잔디를 나타내는 경우 소수점 경우, 열린 공간으로 표시됩니다.
샘플 입력
. 제 5
· G ...
...
... ... G
...
2
샘플 출력
GGGG.
GGGG.
GGGGG
.ggg.
예 규모와 평가 계약
  2 <= N, m <실시 예에서 30 % 평가 = 20.
  2 <= N, m <실시 예 70 %의 평가 용 = 100.
  평가에 대한 모든 사용 예 2 <= N, m <= 1000,1 <= K <= 1000.

package 第十三次模拟;

import java.util.Scanner;

public class Demo9草地 {
	public static int[][] bool;
	public static int[] start;
	public static int[] end;
	public static char[][] num  ;
	public static int k = 0, n = 0, m = 0;
	public static int[] x = { 0, 1, 0, -1 };
	public static int[] y = { 1, 0, -1, 0 };

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		m = sc.nextInt();
		  num = new char[n][m];
		for (int i = 0; i < n; i++) {
			String s = sc.next();
			num[i] = s.toCharArray();
		}
		k = sc.nextInt();
		sc.close();
		start = new int[m * n];
		end = new int[m * n];
		int temp = 0;
		bool = new int[n][m];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (num[i][j] == 'g') {
					start[temp] = i;
					end[temp++] = j;
				}
				else{
					bool[i][j]=-1;
				}
			}
		}
		for (int i = 0; i < temp; i++) {
			dfs(start[i],end[i],k);
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j <m; j++) {
				System.out.print(num[i][j]);
			}
			System.out.println();
		}
	}

	public static void dfs(int xx, int yy, int kk) {
		
		bool[xx][yy]=kk;
		num[xx][yy]='g';
		for (int i = 0; i < 4; i++) {
			int newx = x[i] + xx;
			int newy = y[i] + yy;
			if ( newx >= 0 && newy >= 0 && newx < n && newy < m&&  kk - 1 > bool[newx][newy]) {
				dfs(newx, newy, kk - 1);
			}
		}
	}

}

출시 1472 원저 · 원 찬양 10000 + · 전망 1,760,000 +

추천

출처blog.csdn.net/a1439775520/article/details/104750331