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);
}
}