Copa Blue Bridge: el incremento más largo (análisis detallado)

tema

[Descripción del problema]
   En la secuencia a [1], a [2],…, a [n], si a [i] <a [i + 1] <a [i + 2] <… <a [j] , Luego llame a [i] a a [j] como una secuencia creciente con longitud j-i + 1.
   Dada una secuencia de números, ¿cuánto tiempo es la secuencia creciente más larga de la secuencia?
[Formato de entrada]
   La primera línea de entrada contiene un número entero n.
   La segunda línea contiene n números enteros a [1], a [2],…, a [n] Los números enteros adyacentes están separados por espacios para indicar una secuencia dada de números.
[Formato de salida] La
   línea de salida contiene un número entero para indicar la respuesta.
[Entrada de muestra]
7
5 2 4 1 3 7 2
[Salida de muestra]
   3
[Escala y convenciones
   de casos de uso de evaluación ] Para el 50% de los casos de uso de evaluación, 2 <= n <= 100, 0 <= número en la secuencia <= 1000.
   Para todos los casos de evaluación, 2 <= n <= 1000, 0 <= número en la serie <= 10000.

insinuación

  La longitud de la secuencia de incremento debe inicializarse en 1 en lugar de 0. Si la longitud se inicializa en 0, recuerde no olvidar la longitud + 1 cuando se imprima la salida final.

Ideas para resolver problemas

  Defina dos números de tipo int, uno es la longitud de la secuencia creciente y el otro es la longitud más larga de la secuencia creciente. Si el último elemento es mayor que el elemento anterior, la longitud es +1. Si la longitud es mayor que la longitud más larga, la longitud se asigna a la longitud más larga, si este último elemento es menor que el anterior, se reinicializa la longitud.

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 arr[]=new int[n+1];
        int length=1;//递增序列的长度,初始化为1
        int max=0;//最长的递增序列长度
        for(int i=1;i<n+1;i++){
    
    
            arr[i] = scanner.nextInt();
        }
        for(int i=1;i<n;i++){
    
    
            if(arr[i+1]>arr[i]){
    
    
                length++;//后一项大于前一项+1
                if(length>max){
    
    
                    max=length;
                }
            }else{
    
    
                length=1;//长度初始化
            }
        }
        System.out.println(max);
    }
}




Supongo que te gusta

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