Copa Blue Bridge: Xiao Ming usó bloques de construcción para construir un castillo (bloques de construcción)

tema

[Descripción del problema]
   Xiao Ming construyó un castillo con bloques de construcción.
   Por conveniencia, Xiao Ming usó un volumen cuadrado del mismo tamaño al construirlo y lo colocó en un gráfico de cuadrícula con n filas ym columnas, y cada bloque ocupa un pequeño cuadrado del gráfico de cuadrícula.
   Por supuesto, el castillo de Xiao Ming no es plano, sino tridimensional. Xiao Ming puede colocar bloques encima de otros bloques. Cuando los bloques en un cuadrado son relativamente altos, es una torre alta, y cuando no hay bloques en un cuadrado, es un terreno plano.
   El castillo de Xiao Ming se puede representar por el número de bloques en cada cuadrado. Por ejemplo, lo siguiente representa un castillo.
   9 3 3 1
   3 3 3 0
   0 0 0 0
   Este castillo tiene terrenos baldíos en los lados sur y este, una casa grande en el noroeste, una torre alta en la esquina noroeste y un garaje en la esquina noreste.
   Ahora, Gege Witch viene a destruir el castillo de Xiao Ming y lanza un hechizo para inundar el castillo de Xiao Ming.
   Si la altura del agua es 1, los bloques que están cerca del suelo se inundarán, en el ejemplo anterior se inundarán 7 bloques.
   Si la altura del agua es 2, se inundarán más bloques. En el ejemplo anterior, se inundarán 13 bloques.
   Dado el mapa del castillo de Xiao Ming, ¿cuántos bloques se inundarán cuando la altura del agua sea 1, 2, 3,…, H.
[Formato de entrada]
   La primera línea de entrada contiene dos números enteros n, m.
   Las siguientes n filas, cada una con m enteros, representan el número de capas de ladrillos en cada posición en el castillo de Xiao Ming.
   A continuación, contiene un número entero H, que representa el límite superior de la altura del agua.
[Formato de salida]
   Salida líneas H, cada línea es un número entero. El i-ésimo entero representa el número de bloques que se inundan cuando la altura del agua es i.
[Entrada de muestra]
3 4
9 3 3 1
3 3 3 0
0 0 0 0
10
[Salida de muestra]
   7
   13
   19
   20
   21
   22
   23
   24
   25
   25
[Escala de casos de uso de evaluación y convenciones]
   Para el 40% de los casos de uso de evaluación, 1 <= n, m <= 100, 1 <= H <= 100, el número de bloques de construcción no excede 100;
   para el 70% de los casos de evaluación, 1 <= n, m <= 1000, 1 <= H <= 1000, bloques de construcción El número de capas no excede 1000;
   para todos los casos de evaluación, 1 <= n, m <= 1000 , 1 <= H <= 100000, y el número de bloques de construcción no excede 1000000000.

Código

import java.util.Scanner;

public class Main {
    
    //蓝桥杯要求class命名为Main,且无package
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int arr[][]=new int[n][m];
        for(int i=0;i<n;i++){
    
    
            for(int j=0;j<m;j++){
    
    
                arr[i][j]=scanner.nextInt();//赋值
            }
        }
        int h = scanner.nextInt();
        for(int high=1;high<=h;high++){
    
    
            int count=0;//被水淹没的积木,high的每次循环都会重新定义count
            for(int i=0;i<n;i++){
    
    
                for(int j=0;j<m;j++){
    
    
                    if(high>=arr[i][j]){
    
    
                        count+=arr[i][j];//如果水比房子高,被淹没的积木数为arr[i][j]上的所有积木
                    }
                    if(arr[i][j]>high){
    
    
                        count+=high;  //如果房子比水高,被淹没的积木数则为high
                    }
                }
            }
            System.out.println(count);
        }

    }
}


Análisis del problema

   Todo en código

Supongo que te gusta

Origin blog.csdn.net/qq_47168235/article/details/108917934
Recomendado
Clasificación