Copa Blue Bridge: Distancia máxima (Ideas para resolver preguntas)

tema

[Descripción del problema]
   En la secuencia a_1, a_2,…, a_n, defina la distancia entre dos elementos a_i y a_j como | ij | + | a_i-a_j |, es decir, el valor absoluto de la distancia del subíndice del elemento más la diferencia del valor del elemento, Donde | x | representa el valor absoluto de x.
   Dada una secuencia de números, averigüe la mayor distancia entre elementos.
[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]
5
9 4 2 4 7
[Salida de muestra]
   9
[Descripción de muestra]
   La distancia entre a_1 y a_3 es | 1-3 | + | 9-2 | = 9.
[Escala y convención
   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

   Los arreglos con subíndice 0 no están involucrados en la operación, y se requiere n + 1 al crear el arreglo,
   como int arr [] = new int [n + 1];

Ideas para resolver problemas

   Defina por separado un método para obtener el valor absoluto, llame a este método siempre que desee obtener el valor absoluto

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 max=0;
        for(int i=1;i<n+1;i++){
    
    
            arr[i]=scanner.nextInt();
        }
        for(int i=1;i<n+1;i++){
    
    
            for(int j=i+1;j<n+1;j++){
    
    
                int distance = f(j,i)+f(arr[i],arr[j]); //distance代表距离
                if(distance>max){
    
    
                    max=distance;
                }
            }
        }
        System.out.println(max);

    }
    public static int f(int a,int b){
    
    //取绝对值
        return a>=b?a-b:b-a; //返回绝对值
    }
}

Supongo que te gusta

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