La ecuación de conversión dinámica necesita ser cambiada

No mucho bb, solo enumere la pregunta: esta pregunta, comencé a usar la recursión directamente, de hecho, quería ver si se puede hacer, el resultado es normal, el tiempo de espera, así que pensé en la programación dinámica, comencé a pensar cada centavo Realice la programación dinámica una vez, es decir, si son 7 centavos, iteraré a través de la cantidad de dinero que puedo completar en orden, que es la ecuación de transición de estado, pero al escribir, si encuentro algo mal, repetiré el cálculo de dos Monedas de oro, así que elegí usar monedas de oro como la clave para la conversión dinámica. Usamos un número menor cada vez que esta moneda de oro, luego, cuando seleccionamos cada moneda de oro, no repetiremos el cálculo, porque cada ¡Haz nuevos cálculos y usa nuevas monedas!

Lista el código:

    public int waysToChange(int n) {
        int[]dp=new int[n+1];
        List<Integer>list=new ArrayList<>();
        Collections.addAll(list,1,5,10,25);
        dp[0]=1;

            for(int temp:list){
                for(int i=temp;i<=n;i++){
                    dp[i]=(dp[i-temp]+dp[i])%1000000007;
                }
            }
        return dp[n];
    }

Puede hacerlo si encuentra la transición de estado. ¡Busque la ecuación de transición dinámica con cuidado!

17 artículos originales publicados · elogiados 0 · visitas 140

Supongo que te gusta

Origin blog.csdn.net/qq_33286699/article/details/105704010
Recomendado
Clasificación