js Encuentra la suma máxima de submatrices consecutivas de la matriz A

Idea: Planificación dinámica DP

Fórmula de recursión DP [i] = max (DP [i-1], A [i]);

 // input [-2,1,3, -1, -6] 
 // output: [1,3] 4 
funciones maxSum (arr = []) { 
    let tempSum = 0 ; 
    let maxSum = 0 ;
    for (let i = 0; i <arr.length; i ++ ) { 
        tempSum + = arr [i];
        if (tempSum> maxSum) { 
            maxSum = tempSum; 
        } else  if (tempSum <0 ) { 
            tempSum = 0 ; 
        } 
    } 
    return maxSum; 
}}

Puedes usar el método JS Math para simplificar el código

función maxSum3 (arr = []) { 
    let tempSum = 0 ; 
    let maxSum = 0 ;
    for (let i = 0; i <arr.length; i ++ ) { 
        tempSum = Math.max (tempSum + arr [i], arr [i]); 
        maxSum = Math.max (tempSum, maxSum) 
    } 
    return maxSum; 
}}

 

O imprima para definir una matriz temporal dp

función maxSum2 (arr = []) { 
    let dp = [];
    for (let i = 0; i <arr.length; i ++ ) {
         if (dp [i - 1]> 0 ) { 
            dp [i] = dp [i - 1] + arr [i]; 
        } else { 
            dp [i] = arr [i]; 
        } 
    } 
    return Math.max (... dp) 
}

 

Supongo que te gusta

Origin www.cnblogs.com/ajaxkong/p/12731491.html
Recomendado
Clasificación