le lien du sujet
idées de résolution de problèmes:
dp idées (programmation dynamique), utilisez le tableau de sauvegarde permettra d'économiser la solution optimale pour chaque étape de l'emplacement correspondant, l'étape suivante peut être appelée directement sur les résultats de l'étape
équation de transition d'état: (sauvegarde temporaire est tableaux, arr tableau original) - il est populaire, ne fait face à chaque option sélectionnée, si elle est sélectionnée, au moins la valeur actuelle soit supérieure au résultat, sinon solution optimale actuelle est l'élément en cours elle-même
? Temp [i] = Temp [i-1] + arr [i]> arr [i] température [i-1] + arr [i]: arr [i];
Voici le code source
code 1.ac retourne le maximum que
publique int FindGreatestSumOfSubArray ( int [] arr) { si (arr.length == 0 || arr == NULL ) retourne 0 ; int temp = [] nouveau int [arr.length]; int = max arr [0] ; Temp [ 0] = arr [0 ]; pour ( int i = 1; i <arr.length; ++ i) { Temp [i] = Temp [i-1] + arr [i]> arr [i] température [i-1] +? arr [i ]: arr [i]; si (temp [i]> max) max = température [i]; } Retour max; }
2. Retour Un ensemble optimal de butées (le premier élément est une matrice de transition d'état, le second terme est la solution optimale à ce jour)
publique int [] [] FindGreatestSumOfSubArray ( int [] arr) { si (arr.length == 0 || arr == NULL ) retour nul ; int [] [] temp = nouveau int [arr.length] [2 ]; int = max arr [0 ]; Température [ 0] [1] = arr [0 ]; Température [ 0] [0] = arr [0 ]; pour ( int i = 1; i <arr.length; ++ i) { Temp [i] [ 0] = Temp [i-1] [0] + arr [i]> arr [i] température [i-? 1] [0] + arr [i]: arr [i]; si(temp [i] [0]> max) max = température [i] [0 ]; Temp [i] [ 1] = max; } Retour temporaire; }
Code a été ac
Je espère tout le monde peut aider à
au-dessus