Java combat 8: el problema de la hierba alta

Java combat 8: el problema de la hierba alta

La 11a Copa Blue Bridge 8.

Pregunta original:
[Descripción del problema]
Xiao Ming tiene un espacio abierto. Divide el espacio abierto en n filas y m columnas. La longitud de cada fila y cada columna es 1.
Xiao Ming seleccionó algunas de las pequeñas parcelas y plantó césped, mientras que las otras parcelas permanecieron abiertas.
Estos pastos crecen muy rápido. Cada mes, el pasto crecerá hacia afuera. Si se planta un pequeño trozo de pasto, se expandirá a cuatro pequeños espacios arriba, abajo, izquierda y derecha, estos cuatro pequeños espacios Todos se convertirán en pequeños pedazos de pasto .
Dígale a Xiao Ming dónde hay césped en campo abierto en k meses.
[Formato de entrada]
La primera línea de entrada contiene dos números enteros n, m.
En las siguientes n líneas, cada línea contiene m letras, lo que indica el estado inicial del espacio abierto, sin espacios entre las letras. Si es un punto decimal, significa que es un espacio abierto, si la letra es g, significa que hay césped plantado.
Siguiente contiene un número entero k.
[Formato de salida]
Salida n líneas, cada línea contiene m letras, lo que indica el estado del espacio abierto después de k meses. Si es un punto decimal, significa que es un espacio abierto, si la letra es g, significa que hay pasto.
[Entrada de muestra]
. 4. 5
.g ...
...
... ... G
...
2
[] salida de muestra
GGGG.
GGGG.
GGGGG
.ggg.
[Ejemplo de Evaluación] Tamaño y convenciones utilizados
para la evaluación por 30% en el ejemplo, 2 <= n, m <= 20.
Para el 70% de los casos de evaluación, 2 <= n, m <= 100.
Para todos los casos de evaluación, 2 <= n, m <= 1000 y 1 <= k <= 1000.

Idea: es un pensamiento normal, no puedes crecer afuera en la frontera, pero puedes crecer hacia arriba, abajo, izquierda y derecha en el medio. Sigue siendo un ejercicio realizado con el método básico.

el código se muestra a continuación:

import java.util.Scanner;
public class blueSelf_8 {
    
    
    public static void main(String[] args){
    
    
        int k;
        int p,q;
        Scanner reader=new Scanner(System.in);
        int n=reader.nextInt();
        int m=reader.nextInt();
        char[][] a=new char[n][m];
        char[][] b=new char[n][m];
        String s[]=new String[n];
        for(int i=0;i<n;i++){
    
    
            s[i]=reader.next();
        }
        k=reader.nextInt();
        for(int i=0;i<n;i++){
    
    
            for(int j=0;j<m;j++){
    
    
                a[i][j]=s[i].charAt(j);
            }
        }

        for(int w=0;w<k;w++) {
    
    

            for(int i=0;i<n;i++){
    
    
                for(int j=0;j<m;j++){
    
    
                    b[i][j]=a[i][j];
                }
            }

            for (int i = 0; i < n; i++) {
    
    
                for (int j = 0; j < m; j++) {
    
    
                    if (b[i][j] == 'g') {
    
    
                        p = i;
                        q = j;
                        if (p == 0 && q == 0) {
    
    
                            a[p][q + 1] = 'g';//1
                            a[p + 1][q] = 'g';//2
                        } else if (p == (n - 1) && q == (m - 1)) {
    
    
                            a[p][q - 1] = 'g';//3
                            a[p - 1][q] = 'g';//4
                        } else if (p == 0 && q == (m - 1)) {
    
    
                            a[p][q - 1] = 'g';//3
                            a[p + 1][q] = 'g';//2
                        } else if (p == (n - 1) && q == 0) {
    
    
                            a[p][q + 1] = 'g';//1
                            a[p - 1][q] = 'g';//4
                        } else if (p == 0) {
    
    
                            a[p][q - 1] = 'g';//左
                            a[p][q + 1] = 'g';//右
                            a[p + 1][q] = 'g';//下
                        } else if (p == (n - 1)) {
    
    
                            a[p][q - 1] = 'g';//左
                            a[p][q + 1] = 'g';//右
                            a[p - 1][q] = 'g';//上
                        } else if (q == 0) {
    
    
                            a[p][q + 1] = 'g';//右
                            a[p - 1][q] = 'g';//上
                            a[p + 1][q] = 'g';//下
                        } else if (q == (m - 1)) {
    
    
                            a[p][q - 1] = 'g';//左
                            a[p - 1][q] = 'g';//上
                            a[p + 1][q] = 'g';//下
                        } else {
    
    
                            a[p][q - 1] = 'g';//左
                            a[p][q + 1] = 'g';//右
                            a[p - 1][q] = 'g';//上
                            a[p + 1][q] = 'g';//下
                        }
                    }
                }
            }
        }

        for(int i=0;i<n;i++){
    
    
            for(int j=0;j<m;j++){
    
    
                System.out.printf("%c",a[i][j]);
            }
            System.out.printf("\n");
        }

    }
}
/*
4 5
.g...
.....
..g..
.....
2

*/

resultado de la operación:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_46020391/article/details/112359352
Recomendado
Clasificación