Maison  >  Article  >  Java  >  Analyse d'un exemple de programmation dynamique Java

Analyse d'un exemple de programmation dynamique Java

王林
王林avant
2023-05-01 19:31:04685parcourir

Explication

1. La programmation dynamique est un principe de programmation qui peut être résolu en divisant des problèmes très complexes en sous-problèmes plus petits.

2. Ce principe est similaire à la récursion, mais contrairement à la récursion, chaque sous-problème différent ne peut être résolu qu'une seule fois.

Utilisez le processus

pour déterminer la relation récursive appropriée au problème ci-dessus.

Valeur initiale de la mémoire initiale, du tableau, de la matrice.

Assurez-vous que lorsque nous effectuons un appel récursif (avec accès à la réponse à une sous-question), il est toujours résolu à l'avance.

Instances

public class dpSolution {  
    static int getValue(int[] values, int rodLength) {
        int[] subSolutions = new int[rodLength + 1];
 
        for (int i = 1; i <= rodLength; i++) {
            int tmpMax = -1;
            for (int j = 0; j < i; j++)
                tmpMax = Math.max(tmpMax, values[j] + subSolutions[i - j - 1]);
            subSolutions[i] = tmpMax;
        }
        return subSolutions[rodLength];
    }
 
    public static void main(String[] args) {
        int[] values = new int[]{3, 7, 1, 3, 9};
        int rodLength = values.length;
 
        System.out.println("Max rod value: " + getValue(values, rodLength));
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer