Dada una secuencia de enteros desordenados, encuentre la suma máxima de subcadenas consecutivas.

Descripción del Título:

Dada una secuencia de enteros desordenados, encuentre la suma máxima de subcadenas consecutivas, por ejemplo {-23 17-7 11-2 1-34}, la subcadena es {17, -7,11} y la suma máxima es 21

Descripción de la entrada: la
entrada es una secuencia de números enteros y los números están separados por espacios, como por ejemplo: -23 17-7 11-2 1-34

Descripción de la salida: la
salida es la suma máxima de subsecuencias: 21

Idea :
use dos variables para almacenar el valor más grande de la submatriz y el valor más grande de la submatriz en la posición actual. Atraviese la matriz y determine si el valor máximo actual es cada vez menor que 0. Si es menor que cero, deséchelo, porque bajará el siguiente valor. Y el valor máximo de la suma de la submatriz se actualiza esta vez.

import java.util.Scanner;
public class Main{
    
    
    public static void main(String args[]){
    
    
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        String[] st=str.split(" ");
        int [] arr=new int[st.length];
        for(int i=0;i<st.length;i++){
    
    
            arr[i]=Integer.parseInt(st[i]);
}
        int sum=0;
        int max=arr[0];
        
        for(int i=0;i<arr.length;i++){
    
    
            if(sum<0){
    
    //如果目前最大值小于0,那就应该抛弃,因为只会拉低后面的值
                sum=arr[i];
            }else{
    
    
                sum+=arr[i];
            }
            if(sum>max){
    
    
                max=sum;
            }
        }
        System.out.println(max);
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43815275/article/details/114730620
Recomendado
Clasificación