Leetcode planificación dinámica problema subir escaleras 1

Subiendo escaleras
Asumo que estás subiendo escaleras. Se necesitan n pasos para llegar a la cima del edificio.

Puedes subir 1 o 2 escalones a la vez. ¿De cuántas maneras diferentes puedes subir a la cima del edificio?

Nota: El n dado es un entero positivo.

Ejemplo 1:

Entrada: 2
Salida: 2
Explicación: Hay dos formas de subir a la cima del edificio.

  1. Nivel 1 + Nivel 1
  2. 2do orden
    Ejemplo 2:

Entrada: 3
Salida: 3
Explicación: Hay tres formas de subir a la cima del edificio.
3. Nivel 1 + Nivel 1 + Nivel 1
4. Nivel 1 + Nivel 2
5. Nivel 2 + Nivel 1

De hecho, este problema es casi el mismo que la secuencia de Fibonacci. Si usa la programación dinámica, encuentre la ecuación de cambio de estado, el cálculo ascendente y la plantilla para la programación dinámica

1: Encuentre el caso base, si dp [i] = i significa que hay i maneras para el i-ésimo paso, entonces
base [1] = 1
base [2] = 2
2 dor cycle aplica la plantilla, y si (i> = 3) Hay
dp [i] = dp [i-1] + dp [i-2]
por lo que el código de programación dinámica se puede escribir de la siguiente manera:

 //有多少种方式问题
    public static  int goUpstairs(int n)
    {
        //例外情况
        if(n<=0)
            return -1;
        //开辟数组记录前面的计算,以空间换时间
        int []dp = new int[n+1];

        for(int i=1;i<=n;i++)
        {
            //base case 为1 和 2
            if(i==1)
                dp[i] = 1;

            if(i==2)
                dp[i]=2;
            //
            if(i>=3)
                dp[i] = dp[i-1]+dp[i-2];
        }

        return dp[n];

    }
Publicó 42 artículos originales · ganó 24 · 80,000 visitas

Supongo que te gusta

Origin blog.csdn.net/zhang245754954/article/details/105678229
Recomendado
Clasificación